查看列中是否存在数组中的任何值(excel)

问题描述 投票:0回答:1

我有一个 30 列和 800 行的数组(表 1),每个单元格要么有文本,要么为空白。我想检查该数组中的任何值(特别是逐行)是否存在于列(托管列表对冲)中:

示例:

表 1:

 ASKF    AQA6               
 ARO3    ASKD    AQA5           
 ASKA    ARMA    ARNA    ARMB    ARBA   
 ARMV    ARN6    ARNS    ARO6    AQFS   
 ARQ4    ARMJ    ARN4    ARNJ    ARO4    ARBJ

托管清单对冲:

MCH 基金编号

BWTZ
AEGF
AEGH
AEGJ
AEGL
AEGM
AEGP

我尝试过计数、匹配索引、vlookups,但似乎没有任何效果。我不想使用VBA。我知道这可以通过循环来完成,但必须有一个函数集来完成此操作。到目前为止,我尝试过这个,但我不认为它每次都有效,不知道为什么......

=INDEX('表 1'!D:AE,MATCH('托管列表 - 对冲'!A3,'托管列表 - 对冲'!A:A,0),1)

excel indexing match vlookup
1个回答
0
投票

为此,我将要搜索的文本放在A1F5中,将要搜索的代码放在A11A17

首先,我们需要

FIND
字符串中的文本:
FIND($A$11:$A$17,A1:F1)

接下来,我们需要意识到这需要是一个数组公式(否则它只会检查 A11 和 A1)
当我们实际完成公式的构造时,可以通过使用 CTRL+SHIFT+ENTER 来完成
这会产生一个看起来像

#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;1

的列表

现在我们将其转换为告诉我们是否找到文本的东西
这些值由 ISERROR 转换为

TRUE;TRUE;TRUE;TRUE;TRUE;FALSE

然后我们交换值,因此如果找到则为 TRUE,如果未找到则为 FALSE,使用

NOT
,这会将所有内容反转为
FALSE;FALSE;FALSE;FALSE;FALSE;TRUE

接下来我们将它们转换为可以用

--
添加的数字。这是一个将 TRUE 转换为 1,将 FALSE 转换为 0 的技巧。然后我们有
0;0;0;0;0;1

最后,我们对数字进行求和,这将告诉我们在您正在搜索的字符串中找到了列表中的单词数

这将构建一个如下所示的最终公式:

{=SUM(--(NOT(ISERROR(FIND($A$11:$A$17,A1:F1)))))}

(大括号,

{}
会让您知道您输入了数组公式)

然后,您可以针对 0 进行测试,如果未找到任何内容,则针对 >0 进行测试,以找到一些单词

© www.soinside.com 2019 - 2024. All rights reserved.