根据另一个单元格值跨范围连接文本列标题?

根据另一个单元格值跨范围连接文本列标题?

我收到了一份法案投票的电子表格。第一行列标题是来自 WordPress 的帖子 ID,列中的每个单元格根据每次投票显示 Y 或 N。当我将其导入 Wordpress 时,我会使用它将每个人与他们投票赞成的法案的相关帖子关联起来。这意味着我需要将每个人的所有 ID 放在一列中(即下面的 combinedvotes 列)。

我想做的是,基本上对某个范围(大约有 20 张钞票)运行一次 foreach... 并假设单元格等于“Y”,然后使用分隔符(即 textjoin)将这些 ID 合并为一个列表。在下面的示例中,这将使合并的投票最终为:

  • 简-1234;4678;9214
  • 约翰-4678;9214
姓名 1234 4678 9214 联合投票
约翰

我一直在苦苦思索如何在一个范围内执行此操作。我猜这可能更像是 VBA 的事情。目前,我需要为每张账单创建一个额外的列,检查 Y,然后获取该列的第一行值(例如:=IF(B2="Y",$B$1,""))...最后在整个范围内进行文本连接。这非常低效,而且很难保持井然有序,因为我最终需要所有这些额外的列。

编辑:我应该补充一点,我当然也可以查找和替换每一列,并将 Y 值转换为关联的 ID——但是这张表经常更新,而且我总是以这种格式提供它——所以我宁愿用一个函数来完成这个(如果可能的话)这样我就可以避免每次逐列查找/替换的手动工作。

任何帮助将不胜感激!

答案1

如果您有 Excel 365,则可以使用以下公式:

=LET(array,--("Y"=B2:D2)*($B$1:$D$1),TEXTJOIN(";",TRUE,IF(array>0,array,"")))

答案2

单元格 E2:=TEXTJOIN("; ",TRUE,IF(ISNUMBER(SEARCH("Y",$B2:$D2)),$B$1:$D$1,"")) 单元格 E3:=TEXTJOIN("; ",TRUE,IF(ISNUMBER(SEARCH("Y",$B3:$D3)),$B$1:$D$1,""))

相关内容