2015-12-27 20 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

相关问题