2022-09-22 13:54来源:m.sf1369.com作者:宇宇
你可以在EXCEL内将数据排序后使用IF涵数直接查找,
1
2
3
4
5
6
7
Sub Macro1()
dim years as string
years =2000
Rows(1:1).Select
Selection.AutoFilter
ActiveSheet.cells.AutoFilter Field:=4, Criteria1:=years
End Sub
以上代码定于years 变量,可根据设置年份
然后选择第一行,生成高级筛选,筛选条件是第四列,筛选内容是变量years
range(A65536).end(xlup).offset(1,0)=xxxxxx '这里xxxxxx代表扫描数据
这个楼主可以录制宏
筛选-包含前六个字符,然后复制到对应的sheet内
另外就是使用for循环+字典
以前六个字为字典关键字,使用union进行组合
然后再分批拷贝到对应的sheet里
有啊,你们做数据分析的肯定会遇到筛选对比什么之类的,用VBA肯定会很方便的
powerquery引入来自文件夹的源,然后自建函数提取每一个列,再并入到新的Excel表。
因为见不到原始文件,所以只能这样用文字描述了。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnTime Now + TimeValue(00:10:00), bc
End Sub
以上代码复制到sheet代码区
Public Sub bc()
m = ActiveWorkbook.Path
i = Year(Now) & 年 & Month(Now) & 月
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=m & \ & i & .xlsm, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
以上代码放到模块里面
以上方法使用了另存法,没10分钟另存一次按照当前年月命名,直接覆盖原来文件,当前月份变动时候就没有可以覆盖的文件了,直接另存,循环操作的
我用的是2007 如果是03版本的话将文件后缀改为.xls即可
不知道你讲的空母文件什么意思,不论什么时候打开代码所执行的是一样
至于丢失前面的数据,不太明白你的意思,代码是引用了系统的当前日期提取的年、月,应该跟你将的没有直接联系。已经加你了 白杨
读取Excel,放到vb的变量里
读取excel网上代码好多的,我也可以给你一个示例
没有办法出现选择框的,因为弹出现在框的同时没有办法结束函数或者宏的,提供你一个办法
Sub save(name,url)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
url&\&name , Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas :=False, OpenAfterPublish:=False
End Sub
或者把宏换成函数 funciton save(name,url)这样的话你每次执行可以传递参数进去,把路径和名称传进去,不过你自己要加on error resume next处理
直接复制就行了。
这个用VBA解决不了,只能用按键精灵,可以实现。