在VBA中使用“{”字符
我想在VBA中编写一个类似的函数:
=VLOOKUP(“EN878”,CHOOSE({1,2},A2:B5,D2:E5),2,False)
特别是,在VBA 中使用{}
字符的正确方法是什么?
每次我尝试,我得到“编译错误:无效的字符”
我的代码:
variables
Table3 = Workbooks("gangstar.xlsx").Worksheets("60 in August 2016-26082016-1137").Range("A1:A1000") Table2 = Workbooks("gangstar.xlsx").Worksheets("60 in August 2016-26082016-1137").Range("H1:H1000") For Each cl In Table1 Sheet1.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(cl, Choose({1,2}, Table2, Table3), 2, False) Dept_Row = Dept_Row + 1 Next cl
我可以在Excel电子表格中使用带有CHOOSE
罚款的VLOOKUP
。
请尝试以下操作,这不需要修改或重新计算工作表上的任何单元格:
WorksheetFunction.VLookup("EN878", WorksheetFunction.Choose(Array(1, 2), Range("A2:B5"), Range("D2:E5")), 2, False)
如果你想要决定哪个表作为Vlookup数组,你可以使用IIf
函数。 喜欢:
Application.WorksheetFunction.VLookup(cl, IIf(cl.column=1, Table2, Table3), 2, False)
我build议使用Sheet1.Cells(myRow, myCol).Formula = "=VLOOKUP(...)"
接着Sheet1.Cells(myRow, myCol).Calculate
。
不是一个答案,但是OP所做的并不像看起来那么简单。
鉴于这些数据:
而这个代码:
Sub Tester() Dim r r = Application.Evaluate("CHOOSE({1,2},A1:B5,E1:F5)") Dumper r End Sub Sub Dumper(arr) Dim r, c, s, v For r = 1 To UBound(arr, 1) s = "" For c = 1 To UBound(arr, 2) v = arr(r, c) s = s & vbTab & IIf(IsError(v), "Err!", v) Next c Debug.Print s Next r End Sub
这是输出:
A1 F1 A2 F2 A3 F3 A4 F4 A5 F5
这是你所期望的吗?
我会使用range.formulaR1C1
属性。
Table3AddressR1C1 = Workbooks("gangstar.xlsx").Worksheets("60 in August 2016-26082016-1137").Range("A1:A1000").address(,,xlR1C1, true) Table2AddressR1C1 = Workbooks("gangstar.xlsx").Worksheets("60 in August 2016-26082016-1137").Range("H1:H1000").address(,,xlR1C1, true) Sheet1.Range(Cells(1, Dept_Clm), Cells(Table1.rows.count, Dept_Clm)).FormulaR1C1 = "=VLookup(RxCx, Choose({1,2}, Table2AddressR1C1, Table3AddressR1C1), 2, False)"