[英]Comparing comma separated numbers in cells
在 Excel 2016(但不是 Excel 2013)中,您可以使用以下数组输入公式。
=TEXTJOIN(",",TRUE,IFERROR(1/(1/(ISNUMBER(FIND(","&TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",99)),seq_99,99))&",",","&A2&","))))*TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",99)),seq_99,99)),""))
seq_99是命名公式
Refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
要输入数组公式,在单元格中输入公式后,按住ctrl + shift并按Enter 确认。 如果操作正确,Excel 将在公式周围放置大括号{...}
。
尽管您会认为需要 VBA 解决方案,但如果您使用大量辅助列,那么使用公式来实现这一点实际上非常简单。 当然,这些可以隐藏。
您所需要的只是在表格的每个原始列之后与集合中数字的最大值相等的列数。 对于提供的示例,这将是 17 列。
这是未隐藏辅助列的新表的屏幕截图:
以下公式输入到每个彩色区域的左上角单元格中,并填充/复制粘贴/ctrl 输入到其余单元格中。
红细胞(进入B2
):
=IF(ISERROR(FIND(","&B$1&",",","&$A2&",")),0,1)
绿色细胞(进入T2
):
=IF(ISERROR(FIND(","&T$1&",",","&$S2&",")),0,1)
蓝色细胞(进入AL2
):
=IF(B2*T2,AL$1&",","")&AM2
最后,结果进入单元格AK
:
=LEFT(AL2,LEN(AL2)-1)
这些公式的工作原理是确保集合中的所有数字都有一个前面和后面的逗号,以便可以唯一地搜索它们。
然后是为集合构建网格的简单问题,其中1
表示该数字存在于集合中, 0
表示不存在。 将这两个网格相乘得到“交集”。
然后就是重组结果字符串的简单问题。
警告:
如果“设置”数据中有任何空格,则此解决方案将无法正常工作。 为了克服这个问题,您需要使用SUBSTITUTE()
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.