我在Excel中的工作表上的3列中分布了大量数据。我想匹配A列和A列中相同的值。 B同时保持与列B相关联的值与其各自的B组件内联。这是一个例子:
我拥有什么 -
A B C
1 a g '
2 b h *
3 c a ?
4 d e $
5 e b /
6 f j )
7 g c #
8 h d @
9 i
10 j
我希望实现的目标:
A B C
1 a a ?
2 b b /
3 c c #
4 d d @
5 e e $
6 f
7 g g '
8 h h *
9 i
10 j j )
我找到了这段代码,但它并没有带来第三列值。
Sub Macro1()
Dim rng1 As Range
Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
rng1.Offset(0, 1).Columns.Insert
With rng1.Offset(0, 1)
.FormulaR1C1 = _
"=IF(ISNA(MATCH(RC[-1],C[1],0)),"""",INDEX(C[1],MATCH(RC[-1],C[1],0)))"
.Value = .Value
End With
End Sub
任何帮助将不胜感激! 感谢
答案 0 :(得分:1)
您必须将值存储在内存中(变量数组似乎合适),然后清除值并通过A1:A10查找匹配数组的第一个 rank 。
Sub aaMacro1()
Dim i As Long, j As Long, lr As Long, vVALs As Variant
With ActiveSheet
lr = .Cells(Rows.Count, 1).End(xlUp).Row
vVALs = Range("B1:C" & lr)
Range("B1:C" & lr).ClearContents
For i = 1 To lr
For j = 1 To UBound(vVALs, 1)
If vVALs(j, 1) = .Cells(i, 1).Value Then
.Cells(i, 2).Resize(1, 2) = Application.Index(vVALs, j)
Exit For
End If
Next j
Next i
End With
End Sub
如果您在数据副本上对其进行测试可能是最好的,因为它会在返回之前从B1:C10中删除值。