我有一个包含以下信息的工作表:
| A | B | C |
| 10 | cat | |
| 15 | cat | |
| 5 | dog | |
| 4 | dog | |
| 11 | dog | |
| 6 | fish | |
| 10 | fish | |
我想通过根据B列中的值对它们进行分组来找出A列中的最大值。也就是说,猫,狗和鱼的最大值。
我正考虑将函数FormulaArray
与Max
和If
函数一起使用:
mysheet.range("C1:C7").FormulaArray="=Max(If(R1C2:R7C2=RC[-1],R1C1:R7C1))"
我测试了它但它不起作用,这个公式只比较第一个元素(B1)和整个范围(B1:B7)。
有没有更好的答案?
答案 0 :(得分:0)
答案 1 :(得分:0)
数组公式可以返回单个结果或多个结果。您希望自己为范围内的每个单元格返回单个结果,但由于您将数组公式应用于整个范围,因此它被解释为单个公式,在整个范围内返回多个结果而不是单个结果每个细胞的配方。
您可以通过更改数组范围内的内容来测试它。比如说,改变",0)"到",1)"在C3。它会告诉你,你不能改变数组的一部分。他们全都联系在一起。
您需要做的是遍历您范围内的细胞并将公式应用于每个细胞。
Dim r As Range
Dim rFormulas As Range
Set rFormulas = ActiveSheet.Range("C2:C8")
For Each r In rFormulas.Cells
r.FormulaArray = "=MAX(IF(R2C2:R8C2=RC2,R2C1:R8C1,0))"
Next r