我是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
答案 0 :(得分:0)
为什么不使用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),"")
因为您使用“格式为表格”,功能可能会稍微改变,但这不是一个大问题。