有人可以帮忙创建一个 Excel 宏吗?
A | B | C | D |
----+----+----+----+
20 | ? | 75 | 2 |
22 | ? | 23 | 3 |
23 | ? | 25 | 5 |
24 | ? | 20 | 1 |
50 | ? | 36 | 2 |
36 | ? | 22 | 4 |
75 | ? | 12 | 1 |
如果 C 列的单元格 1(75) 搜索 A 列,如果找到 75(A7),则将 D 列单元格 1(2) 输入到 B 列单元格 7。重复操作,直到 C 列完成。如有任何帮助,我们将不胜感激。
答案1
您实际上根本不需要宏。只需在 B 列中使用函数即可。假设您在第 2 行,只需将其输入到 B2 中。然后将函数向下拖动。
=IF(C2=A2,D2,"")
不清楚您是指 C 搜索 A 列的全部内容,还是仅搜索该行的 A 列。如果您希望在 C 中查找 A 列的全部内容:
=IF(ISNA(VLOOKUP(C2,A:A,1,FALSE)),"",D2)
RESULT:
A B C D
20 2 75 2
22 3 23 3
23 5 25 5
24 20 1
50 36 2
36 4 22 4
75 1 12 1
如果你的意思是你想将 D 中的值放入在 A 行中找到匹配项的同一行,我实际上只会说翻转脚本以在 C 中查找 A,然后复制 D。这将产生相同的结果并且减少混淆。
=IF(ISNA(VLOOKUP(A2,C:D,2,FALSE)),"",VLOOKUP(A2,C:D,2,FALSE))
RESULT:
A B C D
20 1 75 2
22 4 23 3
23 3 25 5
24 20 1
50 36 2
36 2 22 4
75 2 12 1
答案2
子 SRI()
lr = Sheets("Sheet1").Range("C" & Rows.Count).End(xlUp).Row
我 = 2
执行(工作表(“Sheet1”.cells(i,1)<>“”)
strSearch = 工作表(“Sheet1”)。单元格(i,1)
设置 acell = Sheets("Sheet1").Range("C2:C" & lr).Find(What:=strSearch, LookIn:=xlVlaues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
如果 acell 不为空则
x = acell.行
工作表("Sheet1").单元格(i,2) = 工作表("Sheet1").单元格(x, 4)
别的
工作表("Sheet1").Cells(i,2) = "未在 C 列中找到"
万一
i = i+1
环形
子目录结束
''***********评论*******************************
'将第一行视为每列的标题。
'将 C 列的值设为“lr”。
'使用 Do While 循环将 C 列值与 A 列值进行比较。
'随着“i”值的增加,A 列值被逐一送入“strsearch”。
'将“strSearch”值与“lr”中的 C 列值进行匹配,如果值匹配,则该值将由“acell”保存。
'现在使用 IF NOT 条件将相应的 D 列值拉到 B 列。
'如果 A 列中的任何值不存在于 C 列中,则相应的 B 列将更新为注释“未在 C 列中找到”。