2015-12-27 21 views
-1

目前我正在使用以下代碼來查找最大值。此代碼在網絡搜索中找到。並根據我進行如下更改。爲許多單元格設置類似公式

Sub OPTION_MAX() 
ActiveSheet.Range("BU2").FormulaArray = "=MAX(IF(BC$2:BC$3000=$BM2,BE$2:BE$3000))" 
ActiveSheet.Range("BU3").FormulaArray = "=MAX(IF(BC$2:BC$3000=$BM3,BE$2:BE$3000))" 
ActiveSheet.Range("BU4").FormulaArray = "=MAX(IF(BC$2:BC$3000=$BM4,BE$2:BE$3000))" 
ActiveSheet.Range("BU5").FormulaArray = "=MAX(IF(BC$2:BC$3000=$BM5,BE$2:BE$3000))" 
ActiveSheet.Range("BU6").FormulaArray = "=MAX(IF(BC$2:BC$3000=$BM6,BE$2:BE$3000))" 
End Sub 

這些行高達3000行,雖然很長。有人可以幫我縮短這段代碼。

+0

因此,對於BU2到BU3000,您將公式設置爲在該行的BM列中包含單元格? –

+0

使用循環? '因爲我作爲Integer = 1到3000' – garryp

+0

garryp ...........因爲我不是vba程序員,請你幫忙,如何循環。 –

回答

1

這個怎麼樣?

ActiveSheet.Range("BU2:BU3000").FormulaArray = "=MAX(IF(R2C55:R3000C55=RC55,R2C57:R3000C57))" 
+0

Ralph ............對上面的代碼進行了一些更改,例如RC55就位RC55。是的,我在單元格BU2中得到了正確的答案,但是直到BU3000產生了更多相同的答案 –

+0

這可能是因爲您的公式錯誤。你正在執行的公式沒有什麼意義,因爲'ActiveSheet.Range(「BU2」)。FormulaArray =「= MAX(IF(BC $ 2:BC $ 3000 = $ BM2,BE $ 2:BE $ 3000))''等於「ActiveSheet.Range(」BU2「)。FormulaArray =」= MAX(IF(BC $ 2 = $ BM2,BE $ 2:BE $ 3000))「'。但是你的問題不是關於公式,而是關於如何將公式變成3000行。我認爲這是解決的。對?如果是這樣,請將此問題標記爲已回答。 – Ralph

相關問題