在 excel 中动态转置 table

transpose table dynamically in excel

我需要一些关于以下任务的建议,我有一个 Excel sheet 包含 2 列 RESPONSIBLE 和 SERVICE(参见 Attached file 的 Sheet1)

我需要在另一个 Excel sheet 上创建矩阵作为附件中的 Sheet2。

在B2中使用如下数组公式,按要求drag/copy:

=IF(AND($A2<>"",B<>"")=TRUE,IF(ISNUMBER(MATCH($A2&B,Sheet1!$A:$A&Sheet1!$B:$B,0))=TRUE,"x",""),"")

要填充列 headers,请在 B1 和 drag/copy 中使用以下数组公式:

=IFERROR(INDEX(Sheet1!$B:$B0,MATCH(0,COUNTIF($A:A1,Sheet1!$B:$B0),0)),"")

要填充行 headers,请在 A2 和 drag/copy 中使用以下数组公式:

=IFERROR(INDEX(Sheet1!$A:$A0,MATCH(0,COUNTIF($A:A1,Sheet1!$A:$A0),0)),"")

输入以上所有公式用ctrl + shift + enter

我通过增加数据来测试上述公式,它减慢了我的 excel 文件。原因很可能是第一个公式。

如果您在 sheet1 中添加辅助列,则可以在 C2 中添加(不是数组公式):

=A2&B2

那么在sheet2中,B2可以使用(不是数组公式):

=IF(ISNUMBER(MATCH($A2&B,Sheet1!$C:$C,0))=TRUE,"x","")

由于 sheet 中数组公式的数量大大减少,这将大大提高速度到正常水平。

您可以简单地使用一个枢轴 table。输入 "Service" 作为列标签和值,输入 "Responsible" 作为行标签。该值应显示服务计数。唯一的区别是它将显示 1 而不是 "x"。每当更新数据时,您还必须刷新数据透视表 table。