假设每个单元格上方的值都是“是”,那么有没有办法连接一串文本单元格?
例如:
yes yes
dog cat bird hen
在这种情况下,连接后的字符串结果将是:
狗猫
答案1
这需要一个 IF 语句,它是 Excel 公式中的有效表达式。
语法是:
IF( condition, [value_if_true], [value_if_false] )
该公式可能如下所示:
IF(ISNUMBER(SEARCH("Yes",A1)), CONCATENATE(A2, " ", B2, " ", C2))
注意:这只会检查单元格 A1 中是否存在一个“是”,然后连接所有单元格。如果您希望只连接“是”下的单元格,则需要将其扩展为宏或在不同的单元格中使用几个相关公式。
参考:
- IF 语法:https://www.techonthenet.com/excel/formulas/if.php
- 如果单元包含逻辑:https://exceljet.net/formula/if-cell-contains
- 连接语法:https://www.ablebits.com/office-addins-blog/2015/07/15/excel-concatenate-strings-cells-columns/
更新:对于大量数值中使用宏的担忧
宏可以解决这个问题。如果数据行中的单元格数量可能有所不同,并且您需要循环显示每个单元格的信息,则有多种方法可以确定行(或列)中最后一个包含数据的单元格,然后将其反馈到宏中的其他地方。
鉴于 A 行中的“是/空白”和 B 行中的数据,我认为您可以分三步完成此操作:
获取 A 行中最后一个带有“是”的单元格:使用寻找在 A 行范围内。
获取步骤 1 中“查找”的值,并使用它来从单元格 A1 循环到单元格 A(来自“查找”的值),并记录找到的每个“是”的单元格编号。
取这些数字并将 B 行中的每个单元格与步骤 2 中的数字连接起来。
您可以通过合并步骤 2 和 3 将其缩短为两个步骤,每次在 A 中找到“是”时,只需从 B 中提取并连接值即可。
不幸的是,我不是 VBA 天才,实际上只是基于数周的努力和大量论坛帖子编写了有效的宏,所以我甚至不会尝试写出来。但每个组件步骤应该足够简单,可以研究,然后可以根据自己的喜好进行组装。