EXCEL中怎样从多个工作表中选出满足条件的所有行,并生成一个新表!!
发布网友
发布时间:2022-07-23 08:54
我来回答
共4个回答
热心网友
时间:2023-11-26 16:36
EXCEL中怎样从多个工作表中选出满足条件的所有行,并生成一个新表的解决方法如下:
1、打开要处理的excel文档,
2、按alt+f11,打开vba编辑窗口,
3、双击左侧的this sheet,
4、在右侧的空白中输入下面的程序
Sub liyoushang()
Sheets(Sheets.Count).Cells.ClearContents
k = 1
For i = 1 To Sheets.Count - 1
For j = 1 To Sheets(i).Range("a6000").End(xlUp).Row
If WorksheetFunction.Trim(Sheets(i).Cells(j, 2).Text) = "B" Then 'B指公司名称,在此做相应替换
Sheets(i).Rows(j).Copy _
Destination:=Sheets(Sheets.Count).Cells(k, 1)
k = k + 1
End If
Next
Next
End Sub
5、点击工具栏中的执行,
这样就可以了。
热心网友
时间:2023-11-26 16:37
如果公司名在10个表中都是在B列的话,可以插入以下宏实现:
Sub liyoushang()
Sheets.Add After:=Sheets(Sheets.Count)
k = 1
For i = 1 To Sheets.Count - 1
For j = 1 To Sheets(i).Range("a6000").End(xlUp).Row
If WorksheetFunction.Trim(Sheets(i).Cells(j, 2).Text) = "B" Then 'B指公司名称,在此做相应替换
Sheets(i).Rows(j).Copy _
Destination:=Sheets(Sheets.Count).Cells(k, 1)
k = k + 1
End If
Next
Next
End Sub追问谢谢,
测试正常,
只是为什么每运行一次就会产生一个新表呢,而且会重复统计以前产生的新表,
能不能运行时覆盖运行过一次的表,例:运行后生成表11,当再次运行时,不统计表11,而是进行覆盖!!!
追答好的,修改如下,需要你第一次运行时,插入一个新表:
Sub liyoushang()
Sheets(Sheets.Count).Cells.ClearContents
k = 1
For i = 1 To Sheets.Count - 1
For j = 1 To Sheets(i).Range("a6000").End(xlUp).Row
If WorksheetFunction.Trim(Sheets(i).Cells(j, 2).Text) = "B" Then 'B指公司名称,在此做相应替换
Sheets(i).Rows(j).Copy _
Destination:=Sheets(Sheets.Count).Cells(k, 1)
k = k + 1
End If
Next
Next
End Sub
热心网友
时间:2023-11-26 16:37
先把没个表中的A公司筛选出来,然后把每个表中的A公司都找到,然后全部复制粘贴到新表中,可能只有这个方法了
热心网友
时间:2023-11-26 16:38
建议你把表1到10统一到一个新表中,然后用筛选或者数据透视表都可以实现你的效果