【发布时间】:2014-07-31 14:43:22
【问题描述】:
我的 Excel Sheet 格式与此类似
Name code1 Name Code2 Name Number Input1 Input2
AB XY GSABPEXY1 110 BA BC
BC BA GSBCPEBA1 120
CD CA GSCDPECA1 13
DC DA GSDCPEDA3 140
BC BA GSBCPEBA3 15
问题:
- 我想通过匹配 Input1 AND Input2 中的输入来获取 Name 列中的值。
- 我需要将这些匹配值粘贴到另一个工作表的预定义特定行和列单元格中
- 使用 excel 函数 countifs 我正在计算 A 列(名称代码 1)和 B 列(名称代码 2)中具有相同重复值的行数,例如在上面的 BC 和 BA 中,计数为 2。
- 我想将这个值(在 #3 中提到)用于循环迭代
我得到的这段代码看起来非常接近,但它缺少两件事 ABC 在 INSTR 函数中预定义并且它没有 AND 运算符 - 我不知道该怎么做。我对 VBA 很陌生,所以如果我遗漏了一些简单的东西和/或提供的信息较少,请原谅我。
代码:
Sub Hostname()
Dim K As Long, r As Range, v As Variant
K = 1
Dim w1 As Worksheet, w2 As Worksheet
Set w1 = Sheets("Sheet2")
Set w2 = Sheets("Sheet3")
w1.Activate
For Each r In Intersect(Range("A:A"), ActiveSheet.UsedRange)
v = r.Value
If InStr(v, "ABC") > 0 Then
r.Copy w2.Cells(K, 1)
K = K + 1
End If
Next r
End Sub
【问题讨论】:
-
您为什么不创建一个值为
Input1&Input2的第三列并对其进行查找?您根本不需要任何 vba 来进行查找。 -
问题是 Input1 和 Input2 不足以进行 vlookup 以从 C 列中获取所有值,如上表所示。如果您注意到如果我只使用输入 BA 和 BC 并使用 Vlookup,我只会得到第一个 GSBCPEBA1 而不是第二个匹配的 GSBCPEBA3。我不确定 vlookup 是否可以做类似循环的事情。
-
不,VLookup 不适合进行迭代。根据我对您正在尝试做的事情的理解,我已经将一些示例代码作为答案。