从 B1 单元格开始查找 AJ 列相同内容,并将对应行的 AR 列值填到 M 列
2026/02/09 10:46:55
编写这个 Excel VBA 程序,实现从 B1 单元格开始查找 AJ 列相同内容,并将对应行的 AR 列值填到 M 列的功能。这个程序的功能说明:
1 遍历范围:从 B1 单元格开始,遍历到数据的最后一行
2 查找逻辑:
如果您需要更高效的版本(特别是数据量大时),可以使用 VLOOKUP 函数:
使用方法:
1 按 Alt + F11 打开 VBA 编辑器
2 插入一个新的模块
3 复制粘贴上面的代码
4 按 F5 运行程序
注意事项:
- Sub 查找并填充数据()
- Dim ws As Worksheet
- Dim lastRow As Long
- Dim i As Long, j As Long
- Dim searchValue As String
- Dim foundRow As Long
-
- ' 设置当前工作表
- Set ws = ActiveSheet
-
- ' 获取数据的最后一行
- lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
-
- ' 从B1开始遍历
- For i = 1 To lastRow
- ' 获取要查找的值
- searchValue = ws.Cells(i, "B").Value
-
- ' 检查是否为空值
- If searchValue <> "" Then
- ' 在AJ列中查找相同的值
- For j = 1 To lastRow
- If ws.Cells(j, "AJ").Value = searchValue Then
- ' 找到匹配值,将AR列的值填入M列
- ws.Cells(i, "M").Value = ws.Cells(j, "AR").Value
- Exit For ' 找到第一个匹配就退出内层循环
- End If
- Next j
- End If
- Next i
-
- MsgBox "数据填充完成!", vbInformation, "提示"
- End Sub
1 遍历范围:从 B1 单元格开始,遍历到数据的最后一行
2 查找逻辑:
- 读取 B 列每个单元格的值
- 在 AJ 列中查找相同的内容
- 找到匹配后,将对应行的 AR 列值填入 M 列
3 优化:找到第一个匹配值就停止查找,提高效率
如果您需要更高效的版本(特别是数据量大时),可以使用 VLOOKUP 函数:
- Sub 查找并填充数据_高效版()
- Dim ws As Worksheet
- Dim lastRow As Long
- Dim i As Long
- Dim searchValue As String
-
- Set ws = ActiveSheet
- lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
-
- ' 启用屏幕更新以提高性能
- Application.ScreenUpdating = False
-
- For i = 1 To lastRow
- searchValue = ws.Cells(i, "B").Value
-
- If searchValue <> "" Then
- ' 使用VLOOKUP函数查找
- On Error Resume Next
- ws.Cells(i, "M").Value = Application.WorksheetFunction.VLookup( _
- searchValue, ws.Range("AJ1:AR" & lastRow), 5, False)
- On Error GoTo 0
- End If
- Next i
-
- Application.ScreenUpdating = True
- MsgBox "数据填充完成!", vbInformation, "提示"
- End Sub
1 按 Alt + F11 打开 VBA 编辑器
2 插入一个新的模块
3 复制粘贴上面的代码
4 按 F5 运行程序
注意事项:
- 确保 AJ 列的数据格式与 B 列一致
- 如果有多个相同的值,程序会使用第一个匹配的结果
- 程序会处理空值情况,不会对空单元格进行查找