帮我写一个VBA的代码,要求如下:筛选两个Excel表中的相同数据,并运行到一个新表上
时间: 2023-11-22 11:53:40 浏览: 90
Excel-VBA宏编程实例源代码-排序与查询-复制筛选结果到新工作表.zip
5星 · 资源好评率100%
以下是一个简单的 VBA 代码示例,用于将两个 Excel 表中的相同数据筛选出来,并将结果输出到一个新表中:
```
Sub intersect_tables()
'定义变量
Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Dim rng1 As Range, rng2 As Range, rng3 As Range
Dim i As Integer, j As Integer, k As Integer
'先让用户选择要比较的两个表
Set ws1 = Application.InputBox("请选择第一个表格", Type:=8)
Set ws2 = Application.InputBox("请选择第二个表格", Type:=8)
'创建新表格
Set ws3 = Worksheets.Add
'在新表格中创建标题
ws3.Cells(1, 1) = "相同的数据"
'设置第一个表格中要比较的数据范围
Set rng1 = ws1.Range("A2:A" & ws1.Cells(Rows.Count, "A").End(xlUp).Row)
'设置第二个表格中要比较的数据范围
Set rng2 = ws2.Range("A2:A" & ws2.Cells(Rows.Count, "A").End(xlUp).Row)
'遍历第一个表格中的每个数据
For i = 1 To rng1.Rows.Count
'遍历第二个表格中的每个数据
For j = 1 To rng2.Rows.Count
'如果两个数据相同
If rng1.Cells(i, 1).Value = rng2.Cells(j, 1).Value Then
'将相同的数据输出到新表格中
Set rng3 = ws3.Range("A2:A" & ws3.Cells(Rows.Count, "A").End(xlUp).Row + 1)
rng3.Cells(k, 1).Value = rng1.Cells(i, 1).Value
k = k + 1
End If
Next j
Next i
'自适应列宽
ws3.Columns.AutoFit
'提示运行完毕
MsgBox "运行完毕!"
End Sub
```
使用方法:
1. 打开一个新的 Excel 工作簿,按下 Alt+F11 进入 VBA 编辑器;
2. 在左侧的项目窗口中,双击“这个工作簿”;
3. 将以上代码复制到代码窗口中;
4. 按下 F5 运行代码;
5. 依次选择要比较的两个表格,程序将自动筛选出相同的数据,并将结果输出到一个新表格中。
阅读全文