Excel 宏搜索 D 列单元格 1 复制粘贴 B 列单元格 7

Excel 宏搜索 D 列单元格 1 复制粘贴 B 列单元格 7

有人可以帮忙创建一个 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 列中找到”。

相关内容