代码之家  ›  专栏  ›  技术社区  ›  azriebakri

Excel-基于多个条件返回最常出现的值

  •  1
  • azriebakri  · 技术社区  · 8 年前

    我有三个主要专栏 Name , Size Diameter . 我想要的是过滤名称并返回中出现次数最多的值 直径 对于中的特定值 大小 . 例如,我有一个如下表:

    | Name | Size     | Diameter |
    ------------------------------
    |  A   |    30    | 2232.23  |
    |  A   |    30    | 2232.23  |
    |  A   |    30    | 5382.98  |
    |  A   |    29    | 1123.44  |
    |  A   |    29    | 9323.42  |
    |  A   |    29    | 1123.44  |
    |  B   |    31    | 1232.11  |
    |  B   |    31    | 1232.11  |
    |  B   |    10    | 1111.00  |
    ------------------------------
    

    我应该从中获得的价值 直径 对于 A 大小 30%是 2232.23 而对于 B 我应该收到 直径 1232.11 大小 31

    这只是一个例子。实际数据超过9000行。 谢谢

    4 回复  |  直到 8 年前
        1
  •  1
  •   Imran Malek Vijay Kumar    8 年前

    考虑到数据在A、B和C列中,可以将此数组公式放在单元格D1中

    =索引(C$1:C$10,模式(IF(A$1:A$10=A1,匹配(B$1:B$10,B$1:B$10,{0,0})))

    enter image description here

    别忘了按Ctrl+Shift+Enter。

        2
  •  0
  •   Sachi    8 年前

    尝试在单元格D2中粘贴并拖动到最后一行:

    =计数(A:A,A2,B:B,B2,C:C,C2)

    它返回每行的出现次数。

        3
  •  0
  •   Kresimir L.    8 年前

    使用此公式。公式首先创建通过2个设置条件的值数组。然后,如果公式从数组中删除0个值。最后,模式公式计算剩余值并返回出现次数最多的值。

    =SUMPRODUCT(IFERROR(MODE(IF(--($A$3:$A$11000=G2)*($B$3:$B$11000=H2)*$C$3:$C$11000<>0,--($A$3:$A$11000=G2)*($B$3:$B$11000=H2)*$C$3:$C$11000,"")),MAX(--($A$3:$A$11000=G2)*($B$3:$B$11000=H2)*$C$3:$C$11000)))
    

    使用CTRL+Shift+Enter键输入,因为它是一个数组公式。

    enter image description here

    如果要在列D中显示大多数实例,请在单元格中使用此公式 D3 然后把它拖到底。

    =SUMPRODUCT(IFERROR(MODE(IF(--($A$3:$A$11000=A3)*($B$3:$B$11000=B3)*$C$3:$C$11000<>0,--($A$3:$A$11000=A3)*($B$3:$B$11000=B3)*$C$3:$C$11000,"")),MAX(--($A$3:$A$11000=A3)*($B$3:$B$11000=B3)*$C$3:$C$11000)))
    

    enter image description here

        4
  •  0
  •   ian0411    8 年前

    这是一个数组公式(单击 Ctrl键 + 转移 + 一起)您可以尝试:

    =INDEX($C$2:$C$20,MATCH(MODE(IF(($A$2:$A$20=E2)*($B$2:$B$20=F2)*($C$2:$C$20),($A$2:$A$20=E2)*($B$2:$B$20=F2)*($C$2:$C$20),"")),$C$2:$C$20,0),1)
    

    基本上是使用 MODE INDEX/MATCH 返回值。

    推荐文章