将两列数据表示成一个表格

我有两列数据如下所示。

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

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

  ABCDE 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的数组公式并使用填充处理来填充表格,我已经成功地完成了这个任务,但是想知道是否有一个更加可靠的方法来完成这个任务,因为我的数据最终会改变。 即在一个单元格中使用一个公式来填充表格。

在谷歌床单

这个公式:

 =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") 

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

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

如果你想使用它打开范围( A1:AB1: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)))))))}} 

这个公式比较难,而且运行速度较慢,但​​是对结果有更多的控制。