在 MS Excel 中使用子字符串查找字符串的单元格索引



我正在尝试在Excel电子表格中完成一项任务。我有一个字符串列表,每个字符串都是一些稍长的字符串的子字符串。我想做的是针对一系列较长的字符串(列中的一系列单元格(搜索每个子字符串(单元格索引(,并返回实际的单元格索引加 1(或者实际上是该单元格索引的数字部分加 1,例如 B451 => 451+1 = 452(。

因此,例如,我想根据工作表 sorted_data 中的单元格范围 B2:B1001 搜索单元格中的字符串"AAA">data_all并希望单元格索引 + 1 范围 B2:B1001 在其中找到字符串"BAAAB",例如 452(如果"BAAAB"在单元格 B451 中(。字符串和子字符串是唯一的,因此没有多次命中的机会。

该公式必须向下扩展 1000 列工作表sorted_data但搜索范围始终保持不变。

我有公式

=COUNTIF('data_all'!$B$2:$B$1001,"*"&'sorted_data'!G2&"*") > 0

这只返回 TRUE 或 FALSE,而不是我想要的。有什么想法吗?

使用 MATCH 返回行号 + 1

=MATCH("*"&G2&"*",$B:$B,0)+1

MATCH("*"&G2&"*",$B:$B,0)返回行号,+1添加一行。

然后,可以使用 INDEX 返回该行中所需的任何列中的值:

=INDEX($A:$A,MATCH("*"&G2&"*",$B:$B,0)+1)

这将返回找到匹配项所在行的 A 列中的值。

如您所见,我们使用完整的列引用,因此数据可以毫无损害地增长。 而且 INDEX/MATCH 经过了极大的优化,因此公式的数量不会对计算时间产生太大的影响。

最新更新