如题所述
用VBA吧,方便快捷。
第一步,把你的表另存为“.xlsm格式,即启用宏的工作簿”。
第二步,按Alt+F11打开VB编辑器。
第三步,在左侧点你要添加此功能的表名(除了Sheet1,这个表用来存放原始数据)
第四步,在右侧粘贴这段代码。
第五步,粘贴完毕后,关闭VB编辑器,即可。
附加一步说明:如果你嫌每次打开文件时都会提示启用宏太麻烦的话,可以在宏安全性中设置为启用所有宏。
代码如下(代码中单引号开头的绿字是注释文字,如不需要可以去掉):
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Name = Sheet1.Name Then Exit Sub '如果是Sheet1表那么直接退出程序。
If Target.Address = "$A$1" And Range("A1") <> "" Then '如果变更的单元格是A1并且A1单元格不是空值,那么:
Dim irow&
irow = Range("A" & Rows.Count).End(3).Row '赋值irow等于该表A列最末数据所在的行号
If irow > 1 Then Rows("2:" & irow).Delete shift:=xlUp '如果irow>1那么删除第2行至第irow行,下方行上移。
irow = Sheet1.Range("B" & Rows.Count).End(3).Row '重新赋值irow等于Sheet1表B列最末数据所在的行号
Sheet1.Rows("2:" & irow).AutoFilter Field:=2, Criteria1:=Array(Range("A1").Text), Operator:=xlFilterValues '在Sheet1表B列的第2行至第irow行筛选A1的文本值
irow = Sheet1.Range("B" & Rows.Count).End(3).Row '重新赋值irow等于Sheet1表B列最末数据(可见数据,有可能原来最末数据被筛选时隐藏掉了)所在的行号
Sheet1.Rows("2:" & irow).Copy Rows(2) '复制Sheet1表中的可见数据行,粘贴到该表第2行。
Sheet1.Cells.AutoFilter 'Sheet1表退出筛选
End If
End Sub
数组公式,输入完按ctrl+shift+回车键结束公式,使公式前后产生大括号{}后,右拉再下拉公式。(结果出来后,记得将表2的A列单元格格式设置成日期格式)本回答被提问者采纳
如果表1为总表,插个透视表,做一个车号列的插片器,就可以动态的获取到你需要的信息了。
如需帮助,请追问!
若有幸帮到你,请采纳。追问
谢谢,但我主要的目前是要把车号分散出来,后面的很多表的A1是不同的号码
用VBA处理参考下面
Excel怎样输入数据后对数据表筛选出结果