我有一个 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)
为此,我将要搜索的文本放在A1到F5中,将要搜索的代码放在A11到A17
中首先,我们需要
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 进行测试,以找到一些单词