需要有效的单元格公式来计算Google电子表格单元格区域中的子字符串

时间:2018-09-10 19:46:42

标签: string google-sheets count substring formula

问题:在以下情况下,是否有比当前使用的方法更有效的电子表格公式来计算子字符串?还是仅仅是因为数据量太庞大而无法在处理速度上产生有价值的变化?

上下文:我们使用Google电子表格来记录有关商品的信息;每个项目在工作表中分配一行。我们主要标签中的E列用于记录这些项目的标准化标题(以分号分隔),从E3开始。

例如,E3看起来像:

Abraham Lincoln Bicentennial Commission; Abraham Lincoln Bicentennial Exhibition; Library of Congress; Lincoln, Abraham, 1809-1865
电子表格中的

5个标签用于保存我们商品的此类列表;这些选项卡分别标记为“记录1的元数据”到“记录5的元数据”。预计到项目完成时,每个选项卡将包含大约2500行项目信息。

称为“主题标题”的单独选项卡列出了标准化的标题,每个标题都位于A列(以A2开头)中自己的行中。存在数千个标题。标题可能包含标点符号和其他数字,例如“:”,“()”和“?”,因为它们是诸如

Erōs

Olympic Games (23rd : 1984 : Los Angeles, Calif.)

Thomas, Aquinas, Saint, 1225?-1274

G列旨在(按行)列出A列中每个标题的出现情况。

  • Ex:“主题标题”选项卡中的G2计算“主题标题” A2中的标题出现在“记录1的元数据”,“记录2的元数据”,“记录的元数据”选项卡中的E列中的次数。记录3”,“记录4的元数据”和“记录5的元数据”。

问题:每次更改E列中的单元格时(通过添加,删除或编辑内容),工作表都会重新计算。但是,由于标题和项目行的数量(跨5个选项卡),计算出现次数需要一些时间(当前,在最后一次Column E编辑之后,大约5,500行大约需要5分钟)。因此,如果可能的话,我们需要一个更有效的计数公式来保持同步。

过去的困难/复杂之处在于,某些公式的计数不正确,因为它们不够精确(因此获取了太多可能的结果),在单元格中发现一个出现后停止计数等。

  • Ex:以前的公式迭代会将“ Bob”计为在两个单元格中同时发生:一个单元格保持“ Bob”,另一个单元格保持“ Bob Evans”。在这里,它应该仅从第一个单元格开始精确地计算“ Bob”; “鲍勃·埃文斯(Bob Evans)”将是正确的标题并拥有自己的数量
  • Ex:如果一个单元格同时包含“ Bob; Bob”,则先前的迭代将只计算一次“ Bob”,因为它是按单元格而不是分号之间的子字符串计数的。

公式中的复杂性避免了这些问题,但几乎可以肯定地增加了处理时间。

工作公式的最简单形式:

=SUMPRODUCT(TRIM($A2)=TRIM(SPLIT('Metadata for Records'!E$3:INDEX('Metadata for Records'!E$3:E, CountA('Metadata for Records'!E$3:E)),";")))

这会在一个选项卡(这里称为“记录元数据”)中计算标题。

工作公式的合同形式:

=SUM(SUMPRODUCT(TRIM($A2)=TRIM(SPLIT('Metadata for Records 1'!E$3:INDEX('Metadata for Records 1'!E$3:E, CountA('Metadata for Records 1'!E$3:E)),";"))),SUMPRODUCT(TRIM($A2)=TRIM(SPLIT('Metadata for Records 2'!E$3:INDEX('Metadata for Records 2'!E$3:E, CountA('Metadata for Records 2'!E$3:E)),";"))))

这通过组合每个选项卡的总出现次数来计数2个选项卡(“记录1的元数据”和“记录2的元数据”)中的标题。我们日常使用中的实际公式会汇总所有5个元数据标签。

理想解决方案:最有用的公式是:

  1. 正确计数列A主题的出现次数,很可能是通过匹配列E中分号之间的确切子字符串来实现的。
  2. 将对所有其他标点符号和其他数字灵活考虑
  3. 在G列的“主题标题”标签中的所有5个“元数据”标签上进行操作(如果没有更好的选择)
  4. 快速计算几千个单元格(最后一次编辑E列后,需要花费5分钟以上的时间才能完成计算)

鉴于所有这些,是否有可能改进?我欢迎别人有任何想法!

0 个答案:

没有答案