【问题标题】:Finding the cell index of a string using a substring in MS Excel在 MS Excel 中使用子字符串查找字符串的单元格索引
【发布时间】:2020-01-14 20:39:51
【问题描述】:

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

例如,我想在工作表 sorted_data 的单元格 G2 中搜索字符串“AAA”与工作表 data_all 中的单元格范围 B2:B1001 并希望单元格索引 + 1 范围 B2:B1001,其中找到字符串“BAAAB”,例如452(如果“BAAAB”在单元格 B451 中)。字符串和子字符串是唯一的,因此不可能多次命中。

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

我有公式

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

不过,这只会返回 TRUE 或 FALSE,而不是我想要的。有任何想法吗?

【问题讨论】:

  • @TerryW 序列是生物序列,例如“FQILGALST”是子字符串,“CNYPIHAANRELSIFQILGALSTLL”是实际字符串。它们都是独一无二的,因为我在 Python 脚本中生成这些随机序列时验证了这一点。目前并没有真正的大局观,只是我必须做的一项琐碎任务,以使数据 SPSS 以一种易于执行相关分析的方式具有可读性。

标签: excel indexing excel-formula match


【解决方案1】:

使用 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 已经过优化,因此公式的数量不会对计算时间产生太大影响。

【讨论】:

  • 非常感谢您的解释和回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多