Вопрос: Учитывая контекст, приведенный ниже, существует ли более эффективная формула электронной таблицы для подсчета подстрок, чем та, которую мы используем в настоящее время? Или количество данных просто слишком велико, чтобы иметь существенную разницу в скорости обработки?
Контекст: Мы используем электронную таблицу 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 вкладках метаданных.
Идеальное решение: Самая полезная формула будет:
- Колонка «Количество» Правильное вхождение субъекта, скорее всего, путем сопоставления точных подстрок между точками с запятой в столбце E
- будет гибко учитывать все другие знаки препинания и прочие цифры
- Работа со всеми 5 вкладками «Метаданные» на вкладке «Заголовки темы» в столбце G (при условии, что нет лучшей альтернативы)
- Быстрый расчет через несколько тысяч ячеек (ток занимает более 5 минут для завершенияпосле последнего редактирования столбца E)
Учитывая все это, возможно ли улучшение? Я приветствую любые мысли, которые могут возникнуть у других!