假设我的第一个表格如下所示:
遥控 | A | 乙 | C |
---|---|---|---|
1 | X | o | C |
2 | X | ||
3 | o | X |
我想要第一个文档中的第二个表格,如下所示:
遥控 | A | 乙 | C | 德 |
---|---|---|---|---|
1 | “x” 的出现次数 | A1 | B2 | B3 |
2 | “o” 的出现 | A3 | B1 | |
3 | “c” 的出现次数 | C1 |
有没有一种使用公式来实现此目的的优雅方法?我知道我总是必须指定最大出现次数,并在第二张表的一行中保留那么多单元格。
我已经设法为表 2 整理了一些公式:
B1 = =IF(NOT(ISNA(MATCH("x";$Table1.$A$1:$Table1.$A$3;0)));CONCATENATE("A";MATCH("x";$Table1.$A$1:$Table1.$A$3;0));IF(NOT(ISNA(MATCH("x";$Table1.$B$1:$Table1.$B$3;0)));CONCATENATE("B";MATCH("x";$Table1.$B$1:$Table1.$B$3;0));IF(NOT(ISNA(MATCH("x";$Table1.$C$1:$Table1.$C$3;0)));CONCATENATE("C";MATCH("x";$Table1.$C$1:$Table1.$C$3;0)))))
B2 = =IF(NOT(ISNA(MATCH("o";$Table1.$A$1:$Table1.$A$3;0)));CONCATENATE("A";MATCH("o";$Table1.$A$1:$Table1.$A$3;0));IF(NOT(ISNA(MATCH("o";$Table1.$B$1:$Table1.$B$3;0)));CONCATENATE("B";MATCH("o";$Table1.$B$1:$Table1.$B$3;0));IF(NOT(ISNA(MATCH("o";$Table1.$C$1:$Table1.$C$3;0)));CONCATENATE("C";MATCH("o";$Table1.$C$1:$Table1.$C$3;0)))))
B3 = =IF(NOT(ISNA(MATCH("c";$Table1.$A$1:$Table1.$A$3;0)));CONCATENATE("A";MATCH("c";$Table1.$A$1:$Table1.$A$3;0));IF(NOT(ISNA(MATCH("c";$Table1.$B$1:$Table1.$B$3;0)));CONCATENATE("B";MATCH("c";$Table1.$B$1:$Table1.$B$3;0));IF(NOT(ISNA(MATCH("c";$Table1.$C$1:$Table1.$C$3;0)));CONCATENATE("C";MATCH("c";$Table1.$C$1:$Table1.$C$3;0)))))
我确信我可以为其余部分制定出类似的东西,但是这些公式变得越来越庞大,如果我需要改变一些东西,它们会让我发疯,所以我想知道是否有更优雅的方法来做到这一点。
编辑:另外,如果更容易实现的话,让 table2 看起来像这样也很好:
遥控 | A | 乙 |
---|---|---|
1 | “x” 的出现次数 | A1,B2,B3 |
2 | “o” 的出现 | A3,B1 |
3 | “c” 的出现次数 | C1 |
答案1
首先,让自己和 Calc 更轻松 - 从单元格中删除“出现次数”字样,只留下所需的值(x、o、c 等)。如果您需要这个词来增加美感,您可以使用自定义格式在单元格中显示它Occurences of \"@\"
现在将原始范围内的所有单元格与第一列中的值进行比较。如果值不匹配,则使用空字符串。否则,使用 ADDRESS() 函数获取单元格的坐标。将结果与 TEXTJOIN() 合并,不要忘记这是一个数组公式,使用以下公式完成公式Ctrl+Shift+Enter。
{=TEXTJOIN(",";1;IF(Sheet1.$A$1:$C$3=$A1;ADDRESS(ROW(Sheet1.$A$1:$C$3);COLUMN(Sheet1.$A$1:$C$3);4;1);""))}