求无需VBA的Excel公式:提取每行非#N/A数据的表头
无需VBA的Excel公式:提取每行无#N/A值对应的表头
嘿,这事儿完全不用写VBA代码就能搞定!咱们直接用Excel原生公式,就能在「Clients Owed」列里自动列出每行没有#N/A值的客户名称,和你想要的效果一模一样。
针对Excel 365/2021及以上版本(推荐)
这个版本有动态数组函数,公式更简洁直观,直接输入就行:
=TEXTJOIN(", ", TRUE, FILTER($B$1:$D$1, NOT(ISNA(B2:D2)), ""))
给你拆解下每个部分的作用:
$B$1:$D$1:替换成你实际的表头单元格范围(要加绝对引用,下拉公式时表头区域不会变)NOT(ISNA(B2:D2)):筛选条件——找出当前行里不是#N/A错误值的列TEXTJOIN(", ", TRUE, ...):用「逗号+空格」把筛选出来的表头连在一起,TRUE参数会自动忽略空值
针对旧版Excel(2019及以下,无FILTER函数)
如果你的Excel版本没有FILTER,就用数组公式来实现,输入完公式后要按 Ctrl+Shift+Enter 确认(不是直接回车):
=TEXTJOIN(", ", TRUE, IF(NOT(ISNA(B2:D2)), $B$1:$D$1, ""))
要是你的Excel连TEXTJOIN都没有(比如2016及更早),可以用这个组合公式(同样是数组公式,按Ctrl+Shift+Enter):
=SUBSTITUTE(TRIM(CONCAT(IF(NOT(ISNA(B2:D2)), $B$1:$D$1&" ", ""))), " ", ", ")
小提示
- 如果你的「#N/A」是文本格式(不是公式返回的错误值),把公式里的
NOT(ISNA(...))改成B2:D2<>"#N/A"就行 - 想换分隔符?比如用换行代替逗号,把
", "换成CHAR(10),然后记得给单元格设置「自动换行」 - 下拉公式的时候,表头区域的绝对引用($符号)要保留,这样每个行的表头范围都不变
内容的提问来源于stack exchange,提问作者d williams
相关产品推荐
相关产品推荐

