比较单元格

时间:2018-03-12 06:48:27

标签: excel excel-2013 excel-2016

我正在尝试将Reachability Set列中的数字与Antecedent Set列的同一行中的数字进行比较,并返回Intersection Set列的相应单元格中的常用值

截图: enter image description here

2 个答案:

答案 0 :(得分:1)

在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 进行确认,同时按输入。如果您正确执行此操作,Excel将在公式周围放置大括号{...}

enter image description here

答案 1 :(得分:-1)

虽然您认为需要VBA解决方案,但实际上使用公式非常简单,前提是您使用了辅助列的 lot 。当然,这些都可以隐藏起来。

在表的原始列的每个之后,您需要的是一些相当于集合中数字最大值的列数。对于提供的示例,这将是17列。

以下是新表的屏幕截图,其中帮助列已取消隐藏:

screenshot of new table

以下公式输入每个彩色区域的左上角单元格,并填充/复制粘贴/按住进入其余单元格。

红色单元格(输入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表示集合中存在的数字a 0表示它不存在。将这两个网格相乘得到“交集”。

然后重构结果字符串很简单。

<强>警告:

如果“设置”数据中有任何空格,此解决方案将无法正常工作。要解决此问题,您需要使用SUBSTITUTE()函数。