Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Суммирование максимальных значений одной формулой - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Суммирование максимальных значений одной формулой (Формулы/Formulas)
Суммирование максимальных значений одной формулой
ElenHim Дата: Пятница, 22.08.2014, 07:54 | Сообщение № 1
Группа: Проверенные
Ранг: Новичок
Сообщений: 26
Репутация: 10 ±
Замечаний: 0% ±

Коллеги, доброго времени суток.

Возник концептуальный вопрос.
На листе есть несколько столбцов данных (вложение).
В столбце, выделенным зеленом цветом, вычисляется формула на основе максимальных значений в соответствующих столбцах.
В красной ячейке - производится суммирование результатов в зеленом столбце.

Подскажите, возможно ли произвести это вычисление средствами excel в одной ячейке? Т.е. фактически без промежуточных результатов в зеленом столбце?
Сам я накидал функцию в VBA, но может и без него всё получится? - сам я уже голову сломал(

Спасибо
К сообщению приложен файл: 8202693.xlsx (9.0 Kb)


Pluribus Impar
 
Ответить
СообщениеКоллеги, доброго времени суток.

Возник концептуальный вопрос.
На листе есть несколько столбцов данных (вложение).
В столбце, выделенным зеленом цветом, вычисляется формула на основе максимальных значений в соответствующих столбцах.
В красной ячейке - производится суммирование результатов в зеленом столбце.

Подскажите, возможно ли произвести это вычисление средствами excel в одной ячейке? Т.е. фактически без промежуточных результатов в зеленом столбце?
Сам я накидал функцию в VBA, но может и без него всё получится? - сам я уже голову сломал(

Спасибо

Автор - ElenHim
Дата добавления - 22.08.2014 в 07:54
Serge_007 Дата: Пятница, 22.08.2014, 08:09 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Алексей, привет

Как вариант:
Код
=СУММ((1-((E8:E16>F8:F16)*E8:E16+(E8:E16<=F8:F16)*F8:F16))*D8:D16)
К сообщению приложен файл: ElenHim.xls (26.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеАлексей, привет

Как вариант:
Код
=СУММ((1-((E8:E16>F8:F16)*E8:E16+(E8:E16<=F8:F16)*F8:F16))*D8:D16)

Автор - Serge_007
Дата добавления - 22.08.2014 в 08:09
_Boroda_ Дата: Пятница, 22.08.2014, 09:11 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Алексей, давненько тебя что-то видно не было! Куда пропал?

Еще вариант
Код
=СУММ((1-ЕСЛИ(E8:E16<F8:F16;F8:F16;E8:E16))*D8:D16)

еще немассивная
Код
=СУММПРОИЗВ((1-E8:E16-ТЕКСТ(F8:F16-E8:E16;"0%;\0"))*D8:D16)
К сообщению приложен файл: 8202693_1.xlsx (9.1 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеАлексей, давненько тебя что-то видно не было! Куда пропал?

Еще вариант
Код
=СУММ((1-ЕСЛИ(E8:E16<F8:F16;F8:F16;E8:E16))*D8:D16)

еще немассивная
Код
=СУММПРОИЗВ((1-E8:E16-ТЕКСТ(F8:F16-E8:E16;"0%;\0"))*D8:D16)

Автор - _Boroda_
Дата добавления - 22.08.2014 в 09:11
ElenHim Дата: Пятница, 22.08.2014, 09:43 | Сообщение № 4
Группа: Проверенные
Ранг: Новичок
Сообщений: 26
Репутация: 10 ±
Замечаний: 0% ±

Спасибо большое.

Да известно куда я пропадаю - работа всё(( Сначала на старой работе большой проект доделывал, теперь вот на новом месте все заверте...
Я циннично хочу много денег, вот и приходится)))

Получается, ключ - в замещении МАКС() на операцию сравнения двух диапазонов...
Но вот если диапазонов - не два, а три или более(вложение). Придется сравнивать два диапазона между собой, а потом результат - с третьим диапазоном, и так далее?

Я то все пытался именно через МАКС(). Кажется, он не массивный, но вроде там через ИНДЕКС() можно было финт опрокинуть?
Или это уже за гранью добра и зла?
К сообщению приложен файл: ElenHim_2.xls (38.5 Kb)


Pluribus Impar
 
Ответить
СообщениеСпасибо большое.

Да известно куда я пропадаю - работа всё(( Сначала на старой работе большой проект доделывал, теперь вот на новом месте все заверте...
Я циннично хочу много денег, вот и приходится)))

Получается, ключ - в замещении МАКС() на операцию сравнения двух диапазонов...
Но вот если диапазонов - не два, а три или более(вложение). Придется сравнивать два диапазона между собой, а потом результат - с третьим диапазоном, и так далее?

Я то все пытался именно через МАКС(). Кажется, он не массивный, но вроде там через ИНДЕКС() можно было финт опрокинуть?
Или это уже за гранью добра и зла?

Автор - ElenHim
Дата добавления - 22.08.2014 в 09:43
Rioran Дата: Пятница, 22.08.2014, 09:54 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Всем привет.

Ради спортивного интереса сделал свою:

Код
=СУММ((1-ЕСЛИ((E8:E16-F8:F16)>=0;E8:E16;F8:F16))*D8:D16)
К сообщению приложен файл: Adv_Sum.xlsx (9.5 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Пятница, 22.08.2014, 09:55
 
Ответить
СообщениеВсем привет.

Ради спортивного интереса сделал свою:

Код
=СУММ((1-ЕСЛИ((E8:E16-F8:F16)>=0;E8:E16;F8:F16))*D8:D16)

Автор - Rioran
Дата добавления - 22.08.2014 в 09:54
Rioran Дата: Пятница, 22.08.2014, 10:22 | Сообщение № 6
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Но вот если диапазонов - не два, а три или более

Алексей, здесь я бы предложил UDF. Выбирается диапазон, где первый столбец - всегда множитель, в нашем случае 100. Но если будет меняться - формула учтёт.

[vba]
Код
Function Rio_Action(rngX As Range) As Double

Dim A As Long: Dim B As Long: Dim X As Long
A = rngX.Rows.Count: B = rngX.Columns.Count

For X = 1 To A
      Rio_Action = Rio_Action + (1 - Application.Max(Range(rngX.Cells(X, 2), rngX.Cells(X, B)))) * rngX.Cells(X, 1)
Next X

End Function
[/vba]
К сообщению приложен файл: Rio_UDF.xlsm (16.7 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Пятница, 22.08.2014, 10:24
 
Ответить
Сообщение
Но вот если диапазонов - не два, а три или более

Алексей, здесь я бы предложил UDF. Выбирается диапазон, где первый столбец - всегда множитель, в нашем случае 100. Но если будет меняться - формула учтёт.

[vba]
Код
Function Rio_Action(rngX As Range) As Double

Dim A As Long: Dim B As Long: Dim X As Long
A = rngX.Rows.Count: B = rngX.Columns.Count

For X = 1 To A
      Rio_Action = Rio_Action + (1 - Application.Max(Range(rngX.Cells(X, 2), rngX.Cells(X, B)))) * rngX.Cells(X, 1)
Next X

End Function
[/vba]

Автор - Rioran
Дата добавления - 22.08.2014 в 10:22
ElenHim Дата: Пятница, 22.08.2014, 10:37 | Сообщение № 7
Группа: Проверенные
Ранг: Новичок
Сообщений: 26
Репутация: 10 ±
Замечаний: 0% ±

Rioran,

Спасибо. Только в VBA я и сам большой мастер. Интересует возможность именно средствами Excel, без UDF, dll, и прочих.


Pluribus Impar
 
Ответить
СообщениеRioran,

Спасибо. Только в VBA я и сам большой мастер. Интересует возможность именно средствами Excel, без UDF, dll, и прочих.

Автор - ElenHim
Дата добавления - 22.08.2014 в 10:37
AlexM Дата: Пятница, 22.08.2014, 11:06 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4512
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Вариант
Код
=СУММ((1-ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4;СМЕЩ(E8:F8;СТРОКА(1:9)-1;)))*D8:D16)
К сообщению приложен файл: 8202693_2.xls (25.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеВариант
Код
=СУММ((1-ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4;СМЕЩ(E8:F8;СТРОКА(1:9)-1;)))*D8:D16)

Автор - AlexM
Дата добавления - 22.08.2014 в 11:06
AlexM Дата: Пятница, 22.08.2014, 11:54 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4512
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Чтобы вручную не считать количество значений в диапазоне для функции СТРОКА(), можно усложнить формулу так
Код
=СУММ((1-ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4;СМЕЩ(E8:F8;СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(D8:D16)))-1;)))*D8:D16)
или так
Код
=СУММ((1-ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4;СМЕЩ(E8:F8;СТРОКА(A1:ИНДЕКС(A:A;СЧЁТЗ(D8:D16)))-1;)))*D8:D16)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Пятница, 22.08.2014, 11:55
 
Ответить
СообщениеЧтобы вручную не считать количество значений в диапазоне для функции СТРОКА(), можно усложнить формулу так
Код
=СУММ((1-ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4;СМЕЩ(E8:F8;СТРОКА(ДВССЫЛ("1:"&СЧЁТЗ(D8:D16)))-1;)))*D8:D16)
или так
Код
=СУММ((1-ПРОМЕЖУТОЧНЫЕ.ИТОГИ(4;СМЕЩ(E8:F8;СТРОКА(A1:ИНДЕКС(A:A;СЧЁТЗ(D8:D16)))-1;)))*D8:D16)

Автор - AlexM
Дата добавления - 22.08.2014 в 11:54
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Суммирование максимальных значений одной формулой (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!