在 Excel 中以逗号分隔的单元格中查找一系列缺失的数字

问题描述

我试图在一个单元格中找到所有缺失的数字,这些数字的值用逗号分隔,但前提是 A 列在文本中有“E”。下面我有一个示例,说明数据的外观以及 C 列中的预期结果:

解决方法

C2中,向下复制数组(Ctrl+Shift+Enter)公式:

=IF(ISERR(FIND("E",A2)),B2,TEXTJOIN(",",1,IF(ISERR(FIND(","&ROW(INDIRECT("1:18"))&","&B2&",")),ROW(INDIRECT("1:18")),"")))

enter image description here

,

没有 VBA 脚本就没有好的解决方案。

没有 VBA 的解决方案

  1. 使用此函数将逗号分隔的数字转换为分隔单元格
=TRIM(MID(SUBSTITUTE($A2;",";REPT(" ";LEN($A2)));(D$1-1)*LEN($A2)+1;LEN($A2)))

来源:https://exceljet.net/formula/split-text-with-delimiter

  1. 并编写公式以检查所需范围内是否缺少值:
=IF(COUNTIF($D2:$H2;"=1")>0;"";"1,")&IF(COUNTIF($D2:$H2;"=2")>0;"";"2,")&IF(COUNTIF($D2:$H2;"=3")>0;"";"3,")&IF(COUNTIF($D2:$H2;"=4")>0;"";"4,")&IF(COUNTIF($D2:$H2;"=5")>0;"";"5,")

这是范围 1-5 的示例,您可以根据需要多次复制部分公式以适应自己的情况。

  1. 修剪字符串中的最后一个逗号
=IF(LEN($C2)<>0;LEFT($C2;LEN($C2)-1);"")

检查单词是否包含子串的公式:

=ISNUMBER(SEARCH("I";$A8))

如果单元格 A8 中的单词包含字母“I”,则返回 true。

这是带有示例的 XLS 文件:https://bpavol.sk/downloads/missing_numbers.xls

,

使用 Office 365:

=IF(ISNUMBER(FIND("E",LET(x,FILTERXML("<a><b>"&SUBSTITUTE(B2,"</b><b>")&"</b></a>","//b"),y,SEQUENCE(18),TRUE,FILTER(y,ISERROR(MATCH(y,x,0))))),B2)

enter image description here