У меня есть следующая формула, которую я объясню ниже:скорость вверх формула массива
{=SUM(IF(($G$1:$L$1=$O$1)*($G$2:$L$2=$O$2)*($G$3:$L$3=$O$3)*($G$4:$L$4=$O$4)*($G$5:$L$5=$O$5)*($G$6:$L$6=$O$6)*($G$7:$L$7=$O$7);G21:L21))}
Вот что лист выглядит следующим образом:
Под колоннами G - L мы иметь «базу данных» всех данных. Эти столбцы будут добавляться кумулятивно каждый квартал (около 30 столбцов в квартал). Итак, через несколько лет мы закончили с кучей столбцов базы данных (1000 + столбцы исходных данных). Ради этой демонстрации я включил только эти шесть столбцов.
Как вы можете видеть, каждый столбец содержит конкретные параметры между рядами 1 - 7, что позволяет идентифицировать конкретный код страны + код проекта + категорию + финансовый год, + ... (и т. Д.). Это позволяет нам отслеживать уникальный конкретный проект и извлекать его данные.
Что мы имеем после этого на колонке O является конкретным проектом, который мы пытаемся получить значение (вы можете видеть, что строки 1 - 7 такие же, как в колонке G (мы пытаемся для получения значений для данного конкретного проекта).
Здесь приходит нашу формулу. Я прикрепил выше. Вот как это выглядит, когда я нажимаю F2 . Как вы можете видеть IF оператор сначала просто проверяет, соответствуют ли конкретные столбцы заданным критериям в столбце O и суммирует все столбцы, соответствующие всем критериям между строками 1-7.
Теперь вот в чем проблема. У нас есть рабочий лист, который содержит 20 проектов (например, столбец O), и мы используем эту формулу массива для извлечения значений. Проблема в том, что извлечение данных с использованием этого способа занимает много времени. Мы также приняли принцип через VBA, который мы итерируем по всем ячейкам, затем вставляем формулу, вычисляем ячейку массива, а затем копируем & Вставляем результирующее значение внутри (чтобы мы не закончили с полным списком формул массива). Однако по-прежнему требуется LONG для расчета (1 минута или около того).
Мне было интересно, если есть лучшее решение, как получить данные в уже упомянутом формате (это означает, что у нас есть конкретные критерии, которые мы пытаемся найти)? Может быть, SUMIFS может быть лучше? Или sumproduct? Или даже совершенно отличное решение?
Я открыт для любого предложения, которое закрепило бы процесс.
Сколько строк в столбце O содержит эту формулу? – BrakNicku
Вы связали стандартный SUMIFS(); '= СУММЕСЛИМН (G21: L21; $ G $ 1: $ L $ 1; $ O $ 1, $ G $ 2: $ L $ 2; $ O $ 2; $ G $ 3: $ L $ 3; $ O $ 3; $ G $ 4: $ L $ 4; $ O $ 4; $ G $ 5: $ L $ 5; $ O $ 5; $ G $ 6: $ L $ 6; $ O $ 6; $ G $ 7: $ L $ 7; $ O $ 7) ' –