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

在表中表示两列数据

  •  0
  • Kyuu  · 技术社区  · 10 年前

    我有两列数据,如下所示。

       A     B
    1 John   red 
    2 John   yellow
    3 John   yellow
    4 Albert blue
    5 Albert orange
    6 Chad   blue
    7 Tim    yellow
    

    我想用网格/表格格式表示它们,如下所示:

       A      B     C       D     E          
    1         red   yellow  blue  orange  
    2 John    1     2       0     0
    3 Albert  0     0       1     1
    4 Chad    0     0       1     0
    5 Tim     0     1       0     0
    

    我试图表示表中的两列,以记录每个人分配给的颜色数。我通过使用带countif的数组公式并使用填充处理填充表,成功地完成了这一任务。但是,我想知道是否有一种更可靠的方法来完成这项任务,因为我的数据最终会发生变化。i、 e.在一个单元格中使用一个公式填写表格。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Max Makhrov TheMaster    10 年前

    在谷歌工作表中

    此公式:

    =QUERY(A1:C,"select A, Count(C) where A <>'' group by A pivot B")
    

    或仅使用范围 A1:B ,此公式:

    =QUERY({A1:B,B1:B},"select Col1, Count(Col2) where Col1 <>'' group by Col1 pivot Col3")
    

    若要使公式显示0s而不是空格,请使用以下公式:

    ={{"";UNIQUE(A1:A8)},{TRANSPOSE(UNIQUE(B1:B8));ArrayFormula(MMULT(--(UNIQUE(A1:A8=transpose(A1:A8))),TRANSPOSE(--(UNIQUE(B1:B8)=TRANSPOSE(B1:B8)))))}}
    

    如果你想在开放范围内使用它( A1:A , B1:B ),然后使用此:

    ={{"";UNIQUE(OFFSET(A1,,,COUNTA(A1:A)))},{TRANSPOSE(UNIQUE(OFFSET(B1,,,COUNTA(B1:B))));ArrayFormula(MMULT(--(UNIQUE(OFFSET(A1,,,COUNTA(A1:A))=transpose(OFFSET(A1,,,COUNTA(A1:A))))),TRANSPOSE(--(UNIQUE(OFFSET(B1,,,COUNTA(B1:B)))=TRANSPOSE(OFFSET(B1,,,COUNTA(B1:B)))))))}}
    

    这个公式更难,运行速度也更慢,但您可以更好地控制结果。

    推荐文章