2017-04-19 34 views
1

我有這樣的一段代碼,現在前添加:VBA的Excel - 評估功能 - 如何復接

LR = Range("I" & Rows.Count).End(xlUp).Row 
    Range("P2:P" & LR) = Evaluate("I2:I" & LR & "*O2:O" & LR) 

正如你所看到的,這個代碼復接從我列在相應的條目中的每個條目O欄,並把該值插入列P.

現在我需要修改這個代碼,以便它與J列的那些和將從科拉姆我相應的值,然後乘以與來自列O.入門如果我只寫這個

Range("P2:P" & LR) = Evaluate("I2:I" & LR & "J2:J" & LR & "*O2:O" & LR) 

它顯然不起作用,因爲它會在數學上將J與O相乘,然後再做出I和J的彙總。我怎麼能告訴它先把I和J匯合在一起?

在此先感謝。

+2

使用括號! (5 + 3 * 2 = 5 + 6 = 11'和'(5 + 3)* 2 = 8 * 2 = 16'你應該在學校數學這是基本計算([操作順序] //en.wikibooks.org/wiki/Arithmetic/Order_of_Operations))。 –

+0

我做過了,但是我在分號前添加了括號,但它不起作用。謝謝你,@Peh。 –

回答

2

由於@Peh在他的評論中寫道,只需添加()爲補充,以乘法前工作:

Range("P2:P" & LR).Value = Evaluate("(I2:I" & LR & "+J2:J" & LR & ")*O2:O" & LR) 
+0

謝謝。正如我在我的評論中提到的那樣,我試圖在分號前加上括號,但這種方法不起作用。 –

+0

@ D.Todor當你有太多''''和'('使用'Formula'字符串的'Debug.Print'時,你正在嘗試(I Do) –

+2

@ShaiRado額外括號的任何理由?我記得明智的如果有人說「答案是完美的,如果你不能忽略任何東西而不改變意思」,那麼你可以省略額外的括號,如sktneer在他的答案中沒有改變數學! –

1

嘗試像這樣...

Range("P2:P" & LR) = Evaluate("(I2:I" & LR & "+J2:J" & LR & ")*O2:O" & LR) 
1
LR = Range("I" & Rows.Count).End(xlUp).Row 
Range("P2:P" & LR).formulaR1C1 = "=(RC[-7]+RC[-6])*RC[-1]" 

這將(I + J)* O