Zoltan Zslabo Asked: 2023-05-13 07:49:04 +0800 CST2023-05-13 07:49:04 +0800 CST 2023-05-13 07:49:04 +0800 CST 如何汇总行列数据? 772 考虑以下数据: 第一列有很多重复数字(类别代码)。数据以这种通用格式出现,但有更多的行和列。行数各不相同,但通常有 40 列左右。我只需要列1,2和6。4仅在列或仅列中会有一个条目5,永远不会,永远不会。我只需要列标题。 因此,我想重新配置数据并将其显示Sheet 2为如下所示: 我不想使用宏或 VBA,因为公司安全设置可能很麻烦。我可以在单元格 A1 中输入一条单行命令来生成我需要的输出吗? microsoft-excel 2 个回答 Voted Reddy Lutonadio 2023-05-13T16:48:23+08:002023-05-13T16:48:23+08:00 调整以下内容: CHOOSECOLS使用或FILTER函数过滤表并仅选择某些行。 =CHOOSECOLS(A2:F6,{1,2,6}) 或者 =FILTER(FILTER(A2:F6,A2:A6<>""),{1,1,0,0,0,1}) 查找与前两列匹配的列的索引。然后,检查水果值是否不为空。如果是这样,写“水果”。如果不是,写“蔬菜”。 =IF(INDEX($D$2:$D$6,MATCH(A10&B10,($A$2:$A$6)&($B$2:$B$6),0))<>"",$D$1,$E$1) 向下拖动公式以填充其他行。 Best Answer Ron Rosenfeld 2023-05-13T20:27:23+08:002023-05-13T20:27:23+08:00 如果您的数据表被命名为Table7:(使用表结构意味着引用将在您从数据表中添加/删除行时自动调整) 您可以在某个单元格中输入以下公式,结果将SPILL给出您想要的输出: =HSTACK( CHOOSECOLS( Table7, 1, 2, 6 ), BYROW( Table7[Fruit], LAMBDA(arr, IF( arr = "", "Vegetable", "Fruit" ) ) ) ) CHOOSECOLS返回输出所需的列 该BYROW函数根据Fruit单元格是否为空返回包含项目类型的另一列 HSTACK将两者组合成一个数据表输出 编辑: 对于将自动调整多个中间列进行调整的公式,请尝试下面的公式 *该公式将保留列1,2 and the last column并将返回列的标题4-penultimate column =LET( firstCol, 4, numCols, COLUMNS(Table7) - 4, cols, SEQUENCE(, numCols, firstCol), hdrs, INDEX(Table7[#Headers], , cols), HSTACK( CHOOSECOLS(Table7, 1, 2, COLUMNS(Table7)), BYROW( LEN(CHOOSECOLS(Table7, cols)) > 0, LAMBDA(arr, XLOOKUP(TRUE, arr, hdrs)) ) ) ) 同样,您可能需要将结构化引用更改为常规单元格引用。 LEN(CHOOSECOLS(Table7, cols)) > 0返回一个二维数组,TRUE/FALSE具体取决于单元格中是否有内容。 BYROW将TRUE条目匹配到相应的列标题/名称
调整以下内容:
CHOOSECOLS
使用或FILTER
函数过滤表并仅选择某些行。或者
向下拖动公式以填充其他行。
如果您的数据表被命名为
Table7
:(使用表结构意味着引用将在您从数据表中添加/删除行时自动调整)
您可以在某个单元格中输入以下公式,结果将
SPILL
给出您想要的输出:CHOOSECOLS
返回输出所需的列BYROW
函数根据Fruit
单元格是否为空返回包含项目类型的另一列HSTACK
将两者组合成一个数据表输出编辑:
对于将自动调整多个中间列进行调整的公式,请尝试下面的公式
*该公式将保留列
1,2 and the last column
并将返回列的标题4-penultimate column
同样,您可能需要将结构化引用更改为常规单元格引用。
LEN(CHOOSECOLS(Table7, cols)) > 0
返回一个二维数组,TRUE/FALSE
具体取决于单元格中是否有内容。BYROW
将TRUE
条目匹配到相应的列标题/名称