iT邦幫忙

0

請教大師,如何控制R[]C[]的變數?

.Range("O" & i * 15 + 2).Select
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(R2C[-14],評估!C[-14]:C[5],4,FALSE),"""")"      'O最新單價
ActiveCell.FormulaR1C1 = "=IFERROR(VLOOKUP(R[" & i * 15 & "]C[-14],評估!C[-14]:C[5],4,FALSE),"""")" 'O最新單價
'第一種產生所有的i帶入的值都是固定Range("A2")
'第二種帶入的值產生變化當i=0,Range("O2")=IFERROR(VLOOKUP(A2,評估!A:T,4,FALSE),"")
'當i=1,Range("O17")=IFERROR(VLOOKUP(A32,評估!A:T,4,FALSE),"")
'而Range("O17")應該是A17,但是卻跳為A32,請教大師如何修正?
看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-01-13 15:25:43 檢舉
R[]是相對座標
.Range("O17").Select後
你設定R[15]C[-14]就會是A32沒錯啊
Row的座標:17 + 15 = 32,Column的座標 15(O)-14=1(A)
你要A17的話就RC[-14]就好。
"=IFERROR(VLOOKUP(RC[-14],評估!C[-14]:C[5],4,FALSE),"""")"

不熟RC表示法的話,建議直接用絕對位置去設計...
lin520 iT邦新手 4 級 ‧ 2022-01-13 16:29:05 檢舉
謝謝大師指點!
lin520 iT邦新手 4 級 ‧ 2022-01-13 16:50:05 檢舉
請教大師,假設i=0 to 5,每個Range("O" & i ).Select都要查Range("A" & i )的值,請教大師,如何修正上面R[]C[]的參數?
lin520 iT邦新手 4 級 ‧ 2022-01-13 18:03:44 檢舉
就如大師所說,"=IFERROR(VLOOKUP(RC[-14],評估!C[-14]:C[5],4,FALSE),"""")"即可謝謝!
我見你有一些 vlookup 由A至T. 不是阻止你用 formula, 但這樣每動一個值也應該要付出時間,為何不用 vba 直接填值呢?

1 個回答

3
海綿寶寶
iT邦大神 1 級 ‧ 2022-01-13 16:34:18

B2 也好;R2C2 也罷
最重要是要搞清楚「絶對位址」和「相對位址」的差別及用法
日子就會一帆風順了
https://ithelp.ithome.com.tw/upload/images/20220113/200017878MCkuLT5Il.png
https://ithelp.ithome.com.tw/upload/images/20220113/20001787reCYv7QbK1.png

我要發表回答

立即登入回答