我是VBA的新手,我试图把这两个表放到数组中。一个是主人,一个是来源。我想比较两个数组并将价格从源数组带到主数组。如果变量不相同,请将单元格留空。请帮忙,我需要一些提示/建议。
Sub createarray()
Dim masterarray(11, 3) As Variant
Dim sourcearray(25, 3) As Variant
For i = 1 To 25
sourcearray(i, 1) = Range("H" & i + 2)
sourcearray(i, 2) = Range("I" & i + 2)
sourcearray(i, 3) = Range("J" & i + 2)
Debug.Print sourcearray(i, 1); sourcearray(i, 2); sourcearray(i, 3)
Next
For i = 1 To 11
masterarray(i, 1) = Range("D" & i + 2)
masterarray(i, 2) = Range("E" & i + 2)
masterarray(i, 3) = Range("F" & i + 2)
Debug.Print masterarray(i, 1); masterarray(i, 2); masterarray(i, 3)
Next
End Sub
为什么不使用vlookup
和Concat
函数代替VBA?您的代码需要改进几行才能工作:更好地定义数组并嵌套for循环,并创建条件If
来比较两个表
'Note: This is a code example no exactly what you need
Sub createarray()
Dim i, j as integers
Dim wb As Workbook
Dim masterarray As Range: Set wb.worksheet("sheet1").Range("D3:F12")
Dim sourcearray As Range: Set wb..worksheet("sheet1").Range("H3:J26")
'You'll need to concat Cost Centry and Variables
For i = 1 To 11
For j = 1 to 25
If masterarray(i, 2).value = sourcearray(j, 2).value then
masterarray(i, 3).value = sourcearray(j, 3).value
Else
masterarray(i, 3).value = ""
End If
Next j
Next i
End Sub
或选项二
使用Concat
将“成本中心”和“变量”合并到“C3”单元格中:=$D$3&E3
并填写下面你会得到这样的东西:
| 104Enhacement |
| 104IT运营|
|... |
在“G3”中做同样的=$H$3&I3
并填写(当“呼叫中心”代码更改时要小心)你会得到这样的东西:
| 106Enhacement |
| 106IT运营|
|... |
| 104Enhacement |
| 104IT共享服务|
|... |
然后在“F3”细胞中使用=iferror(vlookup("C3","$G$3:$J$26",4,0),"")
因为您使用“格式为表”可能功能稍有改变,但这不是一个大问题。