Excel VBA如何根据用户输入ID从其他工作表复制匹配行到目标表
适配ID匹配逻辑的VBA代码
Sub test() Dim targetId As Variant, insertRow As Variant Dim pastews As Worksheet, copyws As Worksheet Dim matchRng As Range Set copyws = Sheets("Previous") Set pastews = Sheets("Today") ' 输入待复制的ID,支持数字、文本格式ID targetId = Application.InputBox("输入需要复制的ID", Type:=2) If TypeName(targetId) = "Boolean" Then Exit Sub ' 输入目标表插入位置行号 insertRow = Application.InputBox("输入要插入到目标工作表的行号", Type:=1) If TypeName(insertRow) = "Boolean" Then Exit Sub ' 在源表A列精准匹配ID Set matchRng = copyws.Range("A:A").Find(What:=targetId, LookIn:=xlValues, LookAt:=xlWhole) ' 未匹配到ID的提示逻辑 If matchRng Is Nothing Then MsgBox "未查询到对应ID,请检查输入内容", vbExclamation Exit Sub End If ' 执行复制插入操作 copyws.Rows(matchRng.Row).Copy pastews.Rows(Val(insertRow)).Insert Application.CutCopyMode = False End Sub
调整说明
- 第一个输入框的输入类型从仅支持数字的
Type:=1改为支持文本、数字的Type:=2,适配不同格式的ID规则 - 新增A列全匹配查找逻辑,
LookAt:=xlWhole保证只有完全一致的ID才会被匹配,避免模糊匹配误选其他行 - 新增ID不存在的异常提示,防止无匹配结果时程序运行报错
- 如果你需要支持ID模糊匹配,把
LookAt:=xlWhole改为LookAt:=xlPart即可
示例源表参考:
内容的提问来源于stack exchange,提问作者SQLUser
相关产品推荐
相关产品推荐


