将 yes/no 个答案 header 个替换值的范围加入到 google 个工作表中的单个单元格中

Join range of yes/no answer header replacements values into single cell in google sheets

this sheet 行的 运行ge 中的“是”或“否”值(即 A2:C4)替换为列 header 中的值 & 当值(是,no) 存在,然后通过修改下面进一步解释的公式,在所有带有“是”或“否”文本的值之前插入来自 header 文本的附加文本。

到目前为止已经完成了大量工作,但 运行 遇到了一些困难,感谢任何帮助。

所需的输出如下所示:

目标 1:结合是,没有替换公式

  1. 当前公式需要单独的 yes/no 列,但我想将显示替换为是的答案的答案合并到替换为否的答案上方,并用换行符分隔。

目标 2:在 yes/no 文本存在时,有条件地在字符串开头插入额外的 header 文本

  1. 我添加了基于 header 文本和分隔符的文本插入。如果提供了“是”替换答案,它会在 header 中从定界符左侧插入文本(如果提供“否”替换则相反)。例如,提供了一个 header 字符串,例如“喜欢 |不喜欢”,然后是 Regex

    REGEXEXTRACT(J1,"^(.*)|"

将提取管道左侧的文本作为“是”的答案,将另一个正则表达式提取到右侧的“否”

  1. 当我试图创建一个“条件”时,我 运行 遇到了一个问题,如果存在 yes/no 替换,这只会出现。我这样做是通过尝试 RegExReplace 这个文本,当没有使用正则表达式的附加文本时,它应该有效,但没有,如下所示:

如何修改这个Google Spreadsheet to achieve my objective. This is based on previously answered

中的等式

先验方程 将给定行(即 A2:D4)中 运行ge 中的“是”答案替换为按所需顺序在 E4 中用逗号分隔的 header 值。

初步接近 使用单独的等式

替换相同 运行ge 中的“否”答案

使用第三个“辅助”单元格在“是”值下方添加“否”值

指定顺序 header 以所需顺序标有数字。对于 运行ge 中的任何问题,原始公式将寻找“是”并将其替换为 header 值,并输出为索引

第二个公式将按字母顺序对值进行拆分和排序,然后对数字进行 REGEXREPLACE。

非常感谢任何将这三个公式结合起来以实现上述 objective 的帮助!

INDEX(REGEXEXTRACT(G1,"^(.*)\|")&REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(IF(TRANSPOSE(SORT(TRANSPOSE(A2:C3), FLATTEN(A1:C1), 1))="yes", REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(A1:C1))), "(^\d+_)", )&",", )),,9^9))), ",$", ))

INDEX( REGEXEXTRACT(G1,"\|(.*)")&REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE( IF(TRANSPOSE(SORT(TRANSPOSE(A2:C3), FLATTEN(A1:C1), 1))="no", REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(A1:C1))), "(^\d+_)", )&",", )),,9^9))), ",$", ))

备选方案 #2

当后面没有附加文本时替换重新提取的值

分享的googlesheet是here

在 G2 中使用:

=ARRAYFORMULA(IF(REGEXMATCH(FLATTEN(QUERY(TRANSPOSE(A2:C4),,9^9)), "yes"), 
 REGEXEXTRACT(G1, "(.*)\|"), )&REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(TRANSPOSE(SORT(TRANSPOSE(A2:C4), FLATTEN(A1:C1), 1))="yes", 
 REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(A1:C1&","))), "(^\d+_)", ), )),,9^9))), ",$", ".")&
 IF(REGEXMATCH(FLATTEN(QUERY(TRANSPOSE(A2:C4),,9^9)), "no"), 
 IF(REGEXMATCH(FLATTEN(QUERY(TRANSPOSE(A2:C4),,9^9)), "yes"), CHAR(10), )&
 REGEXEXTRACT(G1, "\|(.*)"), )&REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(TRANSPOSE(SORT(TRANSPOSE(A2:C4), FLATTEN(A1:C1), 1))="no", 
 REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(A1:C1&","))), "(^\d+_)", ), )),,9^9))), ",$", "."))

在 H2 中使用:

=ARRAYFORMULA(IF(REGEXMATCH(FLATTEN(QUERY(TRANSPOSE(E2:F4),,9^9)), "yes"), 
 REGEXEXTRACT(H1, "(.*)\|"), )&REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(TRANSPOSE(SORT(TRANSPOSE(E2:F4), FLATTEN(E1:F1), 1))="yes", 
 REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(E1:F1&","))), "(^\d+_)", ), )),,9^9))), ",$", ".")&
 IF(REGEXMATCH(FLATTEN(QUERY(TRANSPOSE(E2:F4),,9^9)), "no"), 
 IF(REGEXMATCH(FLATTEN(QUERY(TRANSPOSE(E2:F4),,9^9)), "yes"), CHAR(10), )&
 REGEXEXTRACT(H1, "\|(.*)"), )&REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(TRANSPOSE(SORT(TRANSPOSE(E2:F4), FLATTEN(E1:F1), 1))="no", 
 REGEXREPLACE(TRANSPOSE(SORT(FLATTEN(E1:F1&","))), "(^\d+_)", ), )),,9^9))), ",$", "."))