Страницы: 1
RSS
Массивы СУММПРОИЗВ
 
Добрый день, коллеги!
Помогите с формулой, все бы хорошо, но работает только лишь при нажатии ctrl+shift+enter. Руководителя так не устраивает, надо чтобы просто enter и готово.
Пример приложил, набросал приблизительную таблицу. Как исправить?
На листе 1 в А1 должна быть сумма 144 без использования  ctrl+shift+enter
Спасибо за ранее.
Изменено: Владислав Столяров - 26.04.2022 13:38:16
 
 PS в столбце F месяц будет также менятся текущему и база должна обновляться
 
Цитата
написал:
надо чтобы просто enter и готово.
Всего-то делов )
Код
=(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A1)<=$F$1;0))*(Лист1!C1=Лист2!G1)*Лист1!B1
+(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A2)<=$F$1;0))*(Лист1!C2=Лист2!G1)*Лист1!B2
+(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A3)<=$F$1;0))*(Лист1!C3=Лист2!G1)*Лист1!B3
+(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A4)<=$F$1;0))*(Лист1!C4=Лист2!G1)*Лист1!B4
+(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A5)<=$F$1;0))*(Лист1!C5=Лист2!G1)*Лист1!B5
+(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A6)<=$F$1;0))*(Лист1!C6=Лист2!G1)*Лист1!B6
+(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A7)<=$F$1;0))*(Лист1!C7=Лист2!G1)*Лист1!B7
 
Здравствуйте. Владислав,

По умолчанию любую формулу массива можно заменить обычной формулой, ссылающейся на соответствующее количество вспомогательных ячеек.
Например, если в столбце D на листе 1 записать такую формулу
Код
=ЕСЛИОШИБКА(ПОИСКПОЗ(A1;{"январь":"февраль":"март":"апрель":"май":"июнь":"июль":"август":"сентябрь":"октябрь":"ноябрь":"декабрь"};0);"")
то её результаты можно будет использовать в обычной формуле на листе 2
Код
=СУММПРОИЗВ((Лист1!$D$1:$D$7<=$F$1)*(Лист1!C1:C7=Лист2!G1)*Лист1!B1:B7)
Устроит ли Вас такое решение?  
Изменено: IKor - 26.04.2022 14:15:18
 
Цитата
написал:
Здравствуйте. Владимир,

По умолчанию любую формулу массива можно заменить обычной формулой, ссылающейся на соответствующее количество вспомогательных ячеек.
Например, если в столбце D на листе 1 записать такую формулу
Код
    [URL=#]?[/URL]       1      =ЕСЛИОШИБКА(ПОИСКПОЗ(A1;{  "январь"  :  "февраль"  :  "март"  :  "апрель"  :  "май"  :  "июнь"  :  "июль"  :  "август"  :  "сентябрь"  :  "октябрь"  :  "ноябрь"  :  "декабрь"  };0);  ""  )   
  то её результаты можно будет использовать в обычной формуле на листе 2
Код
    [URL=#]?[/URL]       1      =СУММПРОИЗВ((Лист1!$D$1:$D$7<=$F$1)*(Лист1!C1:C7=Лист2!G1)*Лист1!B1:B7)   
   Устроит ли Вас такое решение?  
второй вариант хороший, но добавлять лишние столбцы нежелательно ..
 
Цитата
написал:
Цитата
написал:
надо чтобы просто enter и готово.
Всего-то делов )
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7      =(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A1)<=$F$1;0))*(Лист1!C1=Лист2!G1)*Лист1!B1    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A2)<=$F$1;0))*(Лист1!C2=Лист2!G1)*Лист1!B2    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A3)<=$F$1;0))*(Лист1!C3=Лист2!G1)*Лист1!B3    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A4)<=$F$1;0))*(Лист1!C4=Лист2!G1)*Лист1!B4    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A5)<=$F$1;0))*(Лист1!C5=Лист2!G1)*Лист1!B5    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A6)<=$F$1;0))*(Лист1!C6=Лист2!G1)*Лист1!B6    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A7)<=$F$1;0))*(Лист1!C7=Лист2!G1)*Лист1!B7   
 
ахаха, очень большая...
 
Цитата
написал:
Цитата
написал:
надо чтобы просто enter и готово.
Всего-то делов )
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7      =(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A1)<=$F$1;0))*(Лист1!C1=Лист2!G1)*Лист1!B1    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A2)<=$F$1;0))*(Лист1!C2=Лист2!G1)*Лист1!B2    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A3)<=$F$1;0))*(Лист1!C3=Лист2!G1)*Лист1!B3    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A4)<=$F$1;0))*(Лист1!C4=Лист2!G1)*Лист1!B4    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A5)<=$F$1;0))*(Лист1!C5=Лист2!G1)*Лист1!B5    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A6)<=$F$1;0))*(Лист1!C6=Лист2!G1)*Лист1!B6    +(ЕСЛИОШИБКА(МЕСЯЦ(1&Лист1!A7)<=$F$1;0))*(Лист1!C7=Лист2!G1)*Лист1!B7   
 
я скинул пример, а на самом деле там около 5000 строк
 
Владислав,
Если Вы сами написали представленную в примере формулу, то должны понимать, что использование функции СУММПРОИЗВ() призвано исключить необходимость использования формул массива для обработки данных из нескольких ячеек. Такая необходимость возникает из-за попытки обработать внутри формулы бредовый текст из массива Лист1!A1:A7. Обработайте его "снаружи" и всё получится без нажатия трёх весёлых клавиш.
Лично я так и не смог разобраться как именно должно работать предлагаемое преобразование.

P.S. Для ответа конкретному человеку совершенно необязательно полностью цитировать его сообщение. И внизу каждого вашего поста есть кнопка "отредактировать".
===============================
Владислав Столяров написал:
Цитата
но добавлять лишние столбцы нежелательно
Если не желаете добавлять столбцы, то можете сразу переработать до приемлемого уровня текст в "словаре" Лист1!A1:A7
Изменено: IKor - 26.04.2022 14:18:37
 
Цитата
написал:
Владислав,
Если Вы сами написали представленную в примере формулу, то должны понимать, что использование функции СУММПРОИЗВ() призвано исключить необходимость использования формул массива для обработки данных из нескольких ячеек. Такая необходимость возникает из-за попытки обработать внутри формулы бредовый текст из массива Лист1!A1:A7. Обработайте его "снаружи" и всё получится без нажатия трёх весёлых клавиш.
Лично я так и не смог разобраться как именно должно работать предлагаемое преобразование.

P.S. Для ответа конкретному человеку совершенно необязательно полностью цитировать его сообщение. И внизу каждого вашего поста есть кнопка "отредактировать".
===============================
Владислав Столяров написал:
Цитата
но добавлять лишние столбцы нежелательно
Если не желаете добавлять столбцы, то можете сразу переработать до приемлемого уровня текст в "словаре" Лист1!A1:A7
Ок, спасибо за развернутые ответы, теперь все стало ясно)
 
Владислав Столяров, вернитесь в сообщения и приведите их к нормальному виду.  Я про цитаты.
Сообщения можно дополнять а не писать очередями.
К названию темы у меня тоже есть претензия. Ну Массивы, Ну название функции и что?
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх