本帖最後由 gunsix 於 2020-9-4 16:04 編輯
Sorry 係我問得唔好, 故事係咁的...
我初學 VBA 的, 因為經常要將兩個 file 拍埋, 由第二個 file 抽 7 個 column 出嚟貼入第一個 file
用 macro recorder 錄, 佢生成 ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],StaffList.CSV!C1:C19,2,FALSE)", 同一句出現 7 次, 因為我逐個 column 抽, 抽 7 次
我改成 ActiveCell.Formula = "=VLOOKUP(B2,StaffList.CSV!A:Z,2,FALSE)", 因為 reference cell 永遠都係 B2, 同埋易睇啲, 不過一樣要寫 7 次
我想用 For loop 簡化成一句畀佢自己行 7 次, 於是用一個 array 裝住果 7 個 column 位置, 然後改成...
ActiveCell.Formula = "=VLOOKUP(B2,StaffList.CSV!A:Z,StaffListColumn[ i ] ,FALSE)"
不過行完個 cell 變成 =VLOOKUP(B2,StaffList.CSV!A:Z,@StaffListColumn[1],FALSE), 唔成功, 多咗個 @
尋晚 google 一下, 原來有所謂 array forumla, 寫成 =VLOOKUP(B2,StaffList.CSV!A:Z,{2,9,10,12,13,18,19},FALSE) 就唔使行 7 次
於是我在 VBA 入面改成 ActiveCell.Formula = "=VLOOKUP(B2,StaffList.CSV!A:Z,{2,9,10,12,13,18,19},FALSE)"
點知都係變成 =VLOOKUP(B2,StaffList.CSV!A:Z,@{2,9,10,12,13,18,19},FALSE), 又係多咗個 @
原 code 好長, 下面果段出現 7 次, 只係紅色個字唔同
Range("D1").Select
ActiveCell.Formula = "Email Banner"
Range("D2").Select
ActiveCell.Formula = "=VLOOKUP(B2,StaffList.CSV!A:Z,2,FALSE)"
Selection.AutoFill Destination:=Range("D2:D" & Range("A" & Rows.Count).End(xlUp).Row)
Range(Selection, Selection.End(xlDown)).Select |