我试着从下面的列(A和B)中得到公共数字,以便
预期结果逻辑在COMMENT
列中描述
输出在所有情况下都很好,除非A中的值= B中的值。在这种情况下,公式应该在A中显示相同的值,并且显示为空。感谢您的任何帮助。(在Excel 2016中工作)
我当前的数组公式是{=IFERROR(LEFT(A2,MATCH(FALSE,(MID($A2,ROW($L$1:$L$10),1)=MID($B2,ROW($L$1:$L$10),1)),0)-1),"")}
|阿|B|当前结果|预期结果|场景|
| --------------|--------------|--------------|--------------|--------------|
| 万|小行星9999|||任何数字都相等则显示为空|
| 一百四十九|一百四十九||一百四十九|所有数字都相等则显示所有数字|
| 二千年|小行星2499|第二章|第二章|第一个数字相等则显示第一个数字|
| 六六七千|小行星667|六六七百|六六七百|前6个数字相等则显示前6个数字|
5条答案
按热度按时间anhgbhbe1#
正如OP所建议的,把我的评论放在一个答案上:
它适用于Excel 2016版本,但
ROW($L$1:$L$10)
有字符限制。比较较长的字符串应将其更改为ROW($L$1:$L$100)
或其他(最大字符串长度+ 1),或如@大卫Leal建议的无限制为COLUMN($1:$1)
。结果:
1yjd4xko2#
另一种选择:
C1
中的公式:另一个:
更短:
或者更短:
2w3kk1z53#
只是@user11222393在问题的注解部分提出的解决方案的变体,以包括一般情况(该解决方案假设最多
9
位数的部分匹配):下面是输出:
olhwl3o24#
以下公式将不需要数组输入,并给出样本数据中预期的结果。
=IFERROR(LOOKUP(2,1/(LEFT(A2,ROW($A$1:$A$10))=LEFT(B2,ROW($A$1:$A$10))),LEFT(A2,ROW($A$1:$A$10))),"")
编辑:
如果你想让它在字符长度上更灵活,那么由于
INDEX
的使用,它将是笨重的和半易失的:=IFERROR(LOOKUP(2,1/(LEFT(A2,ROW($A$1:INDEX(A:A,MIN(LEN(A2),LEN(B2)))))=LEFT(B2,ROW($A$1:INDEX(A:A,MIN(LEN(A2),LEN(B2)))))),LEFT(A2,ROW($A$1:INDEX(A:A,MIN(LEN(A2),LEN(B2)))))),"")
68de4m5k5#
让我们逐一分解您的标准:
任何数字相等则显示为空
这需要更清楚-你是说如果A或B中的字符串中有任何字符重复,将返回一个空字符串?
剩下的,我想我从你的问题中理解了:
所有数字相等,则显示所有数字
如果A中的值与B匹配,则返回匹配的值:
第一个数字相等,则显示第一个数字
如果A和B中的值的第一个数字匹配,则返回该数字
=IF(LEFT(A1,1)=LEFT(B1,1),LEFT(A1,1))
前6个数字相等,然后显示前6个数字
如果A和B中的值的前六位匹配,则返回这些数字
=IF(左(A1,6)=左(B1,6),左(A1,6))
然后我们可以将这些子标准带入一个公式中
=IF(A1=B1,A1,IF(LEFT(A1,1)=LEFT(B1,1),LEFT(A1,1),IF(LEFT(A1,6)=LEFT(B1,6),LEFT(A1,6),“无匹配标准”))