Нужна эффективная формула ячейки для подсчета подстрок в диапазоне ячеек электронной таблицы Google - PullRequest
0 голосов
/ 10 сентября 2018

Вопрос: Учитывая контекст, приведенный ниже, существует ли более эффективная формула электронной таблицы для подсчета подстрок, чем та, которую мы используем в настоящее время? Или количество данных просто слишком велико, чтобы иметь существенную разницу в скорости обработки?

Контекст: Мы используем электронную таблицу Google для записи информации об элементах; каждому элементу назначается строка на листе. Столбец E на нашей основной вкладке (ях) используется для записи стандартизированных заголовков (разделенных точкой с запятой) для этих элементов, начиная с E3.

Например, E3 выглядит так:

Abraham Lincoln Bicentennial Commission; Abraham Lincoln Bicentennial Exhibition; Library of Congress; Lincoln, Abraham, 1809-1865

5 вкладок в электронной таблице используются для хранения таких списков для наших товаров; вкладки имеют метки «Метаданные для записей 1» - «Метаданные для записей 5». Ожидается, что каждая вкладка будет иметь примерно 2500 строк информации об элементах к моменту завершения проекта.

В отдельной вкладке «Предметные заголовки» перечислены стандартные заголовки, каждый из которых находится в отдельной строке в столбце А (начиная с А2). Существует несколько тысяч заголовков. Заголовки могут иметь знаки препинания и разные цифры, такие как «:», «()» и «?», Из-за формулировок или букв, таких как

Erōs

или

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

или

Thomas, Aquinas, Saint, 1225?-1274

Столбец G предназначен для перечисления (по строке) вхождений для каждого заголовка из Столбца A.

  • Пример: G2 на вкладке «Тематические заголовки» подсчитывает, сколько раз заголовок в «Тематических заголовках» A2 отображается в столбце E на вкладках «Метаданные для записей 1», «Метаданные для записей 2», «Метаданные». для записей 3 »,« Метаданные для записей 4 »и« Метаданные для записей 5 ».

Проблема: Каждый раз, когда ячейка в столбце E изменяется (путем добавления, удаления или редактирования содержимого), лист пересчитывается. Но из-за количества заголовков и строк элементов (на 5 вкладках) вычисление вхождений занимает некоторое время (в настоящее время около 5 минут для примерно 5500 строк после последнего редактирования столбца E). Таким образом, нам нужна более эффективная формула счета, чтобы по возможности идти в ногу.

Прошлые трудности / осложнения заключались в том, что некоторые формулы давали неправильные подсчеты, потому что они были недостаточно точными (таким образом собирали слишком много возможных результатов), перестали считать после обнаружения одного вхождения в ячейку и т. Д.

  • Пример: предыдущие итерации формулы учитывали бы «Боба» как встречающиеся в обеих ячейках: одна с «Бобом», а другая с «Бобом Эвансом». Здесь он должен считать «Боб» только из первой ячейки; «Боб Эванс» должен был бы иметь собственный заголовок и иметь собственный счет
  • Пример: Если бы в ячейке был "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. Колонка «Количество» Правильное вхождение субъекта, скорее всего, путем сопоставления точных подстрок между точками с запятой в столбце E
  2. будет гибко учитывать все другие знаки препинания и прочие цифры
  3. Работа со всеми 5 вкладками «Метаданные» на вкладке «Заголовки темы» в столбце G (при условии, что нет лучшей альтернативы)
  4. Быстрый расчет через несколько тысяч ячеек (ток занимает более 5 минут для завершенияпосле последнего редактирования столбца E)

Учитывая все это, возможно ли улучшение? Я приветствую любые мысли, которые могут возникнуть у других!

...