我正在尝试使用基于唯一案例 ID 的索引匹配将数据从源工作簿复制到目标工作簿。
thisworkbook.Worksheets("Check").range("B2:B" & lastRowDash).value = "=IFERROR(Index(src.Worksheets("Sheet1").range("B:B"), MATCH(ThisWorkbook.Worksheets("Check").range("A2").value, src.Worksheets("Sheet1").range("A:A")), 0), 0), ""Closed"")"
我一按回车键就得到一个编译错误
最佳答案
使用带有 external:=true 的 .Address 将 VBA 工作簿/工作表/范围引用转换为工作表公式引用。
thisworkbook.Worksheets("Check").range("B2:B" & lastRowDash).FORMULA = _
"=IFERROR(INDEX(" & src.Worksheets("Sheet1").range("B:B").Address(external:=true) & ", MATCH(" & ThisWorkbook.Worksheets("Check").range("A2").Address(0, 0, external:=true) & ", " & src.Worksheets("Sheet1").range("A:A").Address(external:=true) & ", 0)), ""Closed"")"
如果将各种地址分配给变量,它可能会更清晰。
dim addr1 as string, addr2 as string, addr3 as string
addr1 = src.Worksheets("Sheet1").range("B:B").Address(external:=true)
addr2 = ThisWorkbook.Worksheets("Check").range("A2").Address(0, 0, external:=true)
addr3 = src.Worksheets("Sheet1").range("A:A").Address(external:=true)
thisworkbook.Worksheets("Check").range("B2:B" & lastRowDash).FORMULA = _
"=IFERROR(INDEX(" & addr1 & ", MATCH(" & addr2 & ", " & addr3 & ", 0)), ""Closed"")"
关于VBA 宏 : Compile error expecting end of statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52213989/