如何匹配不同工作表中的记录?假如有多个工作表,第一个工作表作为基本表,用于和其他几个表匹配记录,假如一条记录同时出现在了基本表和其他表中,我们就在基本表中标识出来。怎么实现这个过程?
- 首先将Excel文件存为可以执行vba的格式,xlsm格式
- 我们利用SN号作为一条记录是否重复的指标,假如两条记录SN号相同,则认为两条记录匹配
- 打开开发工具下的visual basic,或者可以按下快捷键alt+F11
- 打开vb界面,我们双击 thisworkbook,大概一个代码界面
- 复制以下代码到代码界面
- 将鼠标光标移动到代码的任意位置,按下快捷键F5即可执行代码,执行结果可见:在第一个工作表的最后一列标志出了某条记录出现在哪一个工作表中,如果所有工作表都没有匹配,则输出无匹配。
- 注意基本工作表总是位于最前面。也是Excel认为的第一个工作表,代码总是用第一个表中的数据与其他表中的数据去匹配,匹配成功则输出工作表的名称。
-
本教程用到的代码:复制可用。
-
Sub pipei()
-
Set d = CreateObject("scripting.dictionary") -
For i = 2 To Worksheets.Count -
For j = 1 To Sheets(i).Cells(1, 300).End(xlToLeft).Column -
If Sheets(i).Cells(1, j).Text = "SN号" Then -
For r = 2 To Sheets(i).Cells(65536, j).End(xlUp).Row -
If Not (Sheets(i).Cells(r, j).Value = 0 Or Sheets(i).Cells(r, j).Text = "") Then -
d.Add Sheets(i).Cells(r, j).Text, Sheets(i).Name -
End If -
Next r -
End If -
Next j -
Next i -
Sheets(1).Activate -
max_col = Cells(1, 300).End(xlToLeft).Column -
For c = 1 To max_col -
If Cells(1, c).Text = "SN号" Then -
For r = 2 To Cells(65536, c).End(xlUp).Row -
If d.exists(Cells(r, c).Text) Then -
Cells(r, max_col + 1) = d.Item(Cells(r, c).Text) -
Else -
Cells(r, max_col + 1) = "无匹配" -
End If -
Next r -
End If -
Next c -
MsgBox "ok" -
End Sub
转载请注明来自DataScience.
邮箱: 675495787@qq.com