Суммирование остатков по условию
Stormy
Дата: Среда, 11.05.2016, 16:58 |
Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация:
12
±
Замечаний:
0% ±
Excel 2010
Добрый день! Подскажите, пожалуйста, как просуммировать последние остатки каждого цеха?
Добрый день! Подскажите, пожалуйста, как просуммировать последние остатки каждого цеха? Stormy
Место для рекламы.
Ответить
Сообщение Добрый день! Подскажите, пожалуйста, как просуммировать последние остатки каждого цеха? Автор - Stormy Дата добавления - 11.05.2016 в 16:58
ArkaIIIa
Дата: Среда, 11.05.2016, 17:13 |
Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Добрый день. Вариант с 2 доп. столбцами.
Добрый день. Вариант с 2 доп. столбцами. ArkaIIIa
Сообщение отредактировал ArkaIIIa - Среда, 11.05.2016, 17:17
Ответить
Сообщение Добрый день. Вариант с 2 доп. столбцами. Автор - ArkaIIIa Дата добавления - 11.05.2016 в 17:13
Stormy
Дата: Среда, 11.05.2016, 17:17 |
Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация:
12
±
Замечаний:
0% ±
Excel 2010
ArkaIIIa , Благодарю за ответ! К сожалению, решение с доп. столбцами не подходит.
ArkaIIIa , Благодарю за ответ! К сожалению, решение с доп. столбцами не подходит.Stormy
Место для рекламы.
Ответить
Сообщение ArkaIIIa , Благодарю за ответ! К сожалению, решение с доп. столбцами не подходит.Автор - Stormy Дата добавления - 11.05.2016 в 17:17
ArkaIIIa
Дата: Среда, 11.05.2016, 17:47 |
Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация:
115
±
Замечаний:
0% ±
2010
Stormy Ждем тогда Отцов. В один доп. столбец легко сделать в общем то. А вот без них как - не могу пока решить.
Stormy Ждем тогда Отцов. В один доп. столбец легко сделать в общем то. А вот без них как - не могу пока решить.ArkaIIIa
Ответить
Сообщение Stormy Ждем тогда Отцов. В один доп. столбец легко сделать в общем то. А вот без них как - не могу пока решить.Автор - ArkaIIIa Дата добавления - 11.05.2016 в 17:47
Manyasha
Дата: Среда, 11.05.2016, 18:03 |
Сообщение № 5
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
Stormy , а так пойдет?Код
=(СЧЁТЕСЛИ(C13:$C$13;C13)=1)*D13+E12
Stormy , а так пойдет?Код
=(СЧЁТЕСЛИ(C13:$C$13;C13)=1)*D13+E12
Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение Stormy , а так пойдет?Код
=(СЧЁТЕСЛИ(C13:$C$13;C13)=1)*D13+E12
Автор - Manyasha Дата добавления - 11.05.2016 в 18:03
abtextime
Дата: Среда, 11.05.2016, 18:26 |
Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
UDF [vba]Код
[s]Public Function GreenSum(R As Range) As Double GreenSum = 0 For i = 1 To R.Rows.Count - 1 If (R.Cells(i, 1).Value <> R.Cells(i + 1, 1).Value) Or (R.Cells(i, 2).Value <> R.Cells(i + 1, 2).Value) Then GreenSum = GreenSum + R.Cells(i, 3) End If Next i GreenSum = GreenSum + R.Cells(R.Rows.Count, 3) End Function[/s]
[/vba] upd. Не соответствует условиям
UDF [vba]Код
[s]Public Function GreenSum(R As Range) As Double GreenSum = 0 For i = 1 To R.Rows.Count - 1 If (R.Cells(i, 1).Value <> R.Cells(i + 1, 1).Value) Or (R.Cells(i, 2).Value <> R.Cells(i + 1, 2).Value) Then GreenSum = GreenSum + R.Cells(i, 3) End If Next i GreenSum = GreenSum + R.Cells(R.Rows.Count, 3) End Function[/s]
[/vba] upd. Не соответствует условиям abtextime
Сообщение отредактировал abtextime - Среда, 11.05.2016, 19:05
Ответить
Сообщение UDF [vba]Код
[s]Public Function GreenSum(R As Range) As Double GreenSum = 0 For i = 1 To R.Rows.Count - 1 If (R.Cells(i, 1).Value <> R.Cells(i + 1, 1).Value) Or (R.Cells(i, 2).Value <> R.Cells(i + 1, 2).Value) Then GreenSum = GreenSum + R.Cells(i, 3) End If Next i GreenSum = GreenSum + R.Cells(R.Rows.Count, 3) End Function[/s]
[/vba] upd. Не соответствует условиям Автор - abtextime Дата добавления - 11.05.2016 в 18:26
Nic70y
Дата: Среда, 11.05.2016, 19:03 |
Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация:
2273
±
Замечаний:
0% ±
Excel 2010
формула массиваКод
=СУММ(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(C4:C13;"<"&C4:C13)+0,1;СТРОКА(C4:C13)-3);НАИМЕНЬШИЙ(СЧЁТЕСЛИ(C4:C13;"<"&C4:C13)+СТРОКА(C4:C13)/10000;СТРОКА(C4:C13)-3);1)=СТРОКА(C4:C13)-3;D4:D13))
хотя нет, где-то ошибка
формула массиваКод
=СУММ(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(C4:C13;"<"&C4:C13)+0,1;СТРОКА(C4:C13)-3);НАИМЕНЬШИЙ(СЧЁТЕСЛИ(C4:C13;"<"&C4:C13)+СТРОКА(C4:C13)/10000;СТРОКА(C4:C13)-3);1)=СТРОКА(C4:C13)-3;D4:D13))
хотя нет, где-то ошибка Nic70y
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Среда, 11.05.2016, 19:13
Ответить
Сообщение формула массиваКод
=СУММ(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(СЧЁТЕСЛИ(C4:C13;"<"&C4:C13)+0,1;СТРОКА(C4:C13)-3);НАИМЕНЬШИЙ(СЧЁТЕСЛИ(C4:C13;"<"&C4:C13)+СТРОКА(C4:C13)/10000;СТРОКА(C4:C13)-3);1)=СТРОКА(C4:C13)-3;D4:D13))
хотя нет, где-то ошибка Автор - Nic70y Дата добавления - 11.05.2016 в 19:03
abtextime
Дата: Среда, 11.05.2016, 19:16 |
Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 828
Репутация:
117
±
Замечаний:
0% ±
Excel 2010
[vba]Код
Public Function GreenSum(R As Range) As Double GreenSum = 0 For i = 1 To R.Rows.Count - 1 IsLast = True For j = i + 1 To R.Rows.Count If (R.Cells(i, 1) = R.Cells(j, 1)) And (R.Cells(i, 2) = R.Cells(j, 2)) Then IsLast = False Next j If IsLast Then GreenSum = GreenSum + R.Cells(i, 3) Next i GreenSum = GreenSum + R.Cells(R.Rows.Count, 3) End Function
[/vba] Так корректнее
[vba]Код
Public Function GreenSum(R As Range) As Double GreenSum = 0 For i = 1 To R.Rows.Count - 1 IsLast = True For j = i + 1 To R.Rows.Count If (R.Cells(i, 1) = R.Cells(j, 1)) And (R.Cells(i, 2) = R.Cells(j, 2)) Then IsLast = False Next j If IsLast Then GreenSum = GreenSum + R.Cells(i, 3) Next i GreenSum = GreenSum + R.Cells(R.Rows.Count, 3) End Function
[/vba] Так корректнее abtextime
Ответить
Сообщение [vba]Код
Public Function GreenSum(R As Range) As Double GreenSum = 0 For i = 1 To R.Rows.Count - 1 IsLast = True For j = i + 1 To R.Rows.Count If (R.Cells(i, 1) = R.Cells(j, 1)) And (R.Cells(i, 2) = R.Cells(j, 2)) Then IsLast = False Next j If IsLast Then GreenSum = GreenSum + R.Cells(i, 3) Next i GreenSum = GreenSum + R.Cells(R.Rows.Count, 3) End Function
[/vba] Так корректнее Автор - abtextime Дата добавления - 11.05.2016 в 19:16
Nic70y
Дата: Четверг, 12.05.2016, 08:23 |
Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация:
2273
±
Замечаний:
0% ±
Excel 2010
теперь, вроде бы правильно, наверное:Код
=СУММ(ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(СТРОКА(C4:C13);ОКРУГЛ(ОСТАТ(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+0,1;СТРОКА(C1:C10));НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+СТРОКА(C4:C13)/1000;СТРОКА(C1:C10)))=СТРОКА(C1:C10);НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+СТРОКА(C4:C13)/1000;СТРОКА(C1:C10)));1);3)*1000;));D4:D13))
теперь, вроде бы правильно, наверное:Код
=СУММ(ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(СТРОКА(C4:C13);ОКРУГЛ(ОСТАТ(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+0,1;СТРОКА(C1:C10));НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+СТРОКА(C4:C13)/1000;СТРОКА(C1:C10)))=СТРОКА(C1:C10);НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+СТРОКА(C4:C13)/1000;СТРОКА(C1:C10)));1);3)*1000;));D4:D13))
Nic70y
ЮMoney 41001841029809
Ответить
Сообщение теперь, вроде бы правильно, наверное:Код
=СУММ(ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(СТРОКА(C4:C13);ОКРУГЛ(ОСТАТ(ЕСЛИ(ПОИСКПОЗ(НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+0,1;СТРОКА(C1:C10));НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+СТРОКА(C4:C13)/1000;СТРОКА(C1:C10)))=СТРОКА(C1:C10);НАИМЕНЬШИЙ(ПОИСКПОЗ(C4:C13;C4:C13;)+СТРОКА(C4:C13)/1000;СТРОКА(C1:C10)));1);3)*1000;));D4:D13))
Автор - Nic70y Дата добавления - 12.05.2016 в 08:23
Stormy
Дата: Четверг, 12.05.2016, 09:50 |
Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация:
12
±
Замечаний:
0% ±
Excel 2010
ArkaIIIa , Порывшись в инете, усомнился, что мою задачу можно решить без макросов и/или доп. столбца. Nic70y , Manyasha , Благодарю за участие abtextime , Благодарю. Своя функция в данном случае самое простое решение
ArkaIIIa , Порывшись в инете, усомнился, что мою задачу можно решить без макросов и/или доп. столбца. Nic70y , Manyasha , Благодарю за участие abtextime , Благодарю. Своя функция в данном случае самое простое решениеStormy
Место для рекламы.
Ответить
Сообщение ArkaIIIa , Порывшись в инете, усомнился, что мою задачу можно решить без макросов и/или доп. столбца. Nic70y , Manyasha , Благодарю за участие abtextime , Благодарю. Своя функция в данном случае самое простое решениеАвтор - Stormy Дата добавления - 12.05.2016 в 09:50
Stormy
Дата: Пятница, 13.05.2016, 07:52 |
Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 357
Репутация:
12
±
Замечаний:
0% ±
Excel 2010
Nic70y , :hands: Нужно будет проверить как себя поведет формула при объеме в 50к строк
Nic70y , :hands: Нужно будет проверить как себя поведет формула при объеме в 50к строкStormy
Место для рекламы.
Сообщение отредактировал Stormy - Пятница, 13.05.2016, 07:52
Ответить
Сообщение Nic70y , :hands: Нужно будет проверить как себя поведет формула при объеме в 50к строкАвтор - Stormy Дата добавления - 13.05.2016 в 07:52
Nic70y
Дата: Пятница, 13.05.2016, 21:11 |
Сообщение № 12
Группа: Друзья
Ранг: Экселист
Сообщений: 8759
Репутация:
2273
±
Замечаний:
0% ±
Excel 2010
ну тут стоит задуматься... уже 4 мин считает - пока не сосчитала, но (не буду утверждать) помоему не лучше... проверил то и другое - полное зависание... зря не хотите доп. столбцов (или наверное массивы в вба)вариант в файле считает "моментально" (с доп столбцом) Код
=ЕСЛИ(ЕНД(ПОИСКПОЗ(C4;C5:C$61000;));D4;"")
ну тут стоит задуматься... уже 4 мин считает - пока не сосчитала, но (не буду утверждать) помоему не лучше... проверил то и другое - полное зависание... зря не хотите доп. столбцов (или наверное массивы в вба)вариант в файле считает "моментально" (с доп столбцом) Код
=ЕСЛИ(ЕНД(ПОИСКПОЗ(C4;C5:C$61000;));D4;"")
Nic70y
К сообщению приложен файл:
18.xlsx
(9.9 Kb)
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Суббота, 14.05.2016, 07:54
Ответить
Сообщение ну тут стоит задуматься... уже 4 мин считает - пока не сосчитала, но (не буду утверждать) помоему не лучше... проверил то и другое - полное зависание... зря не хотите доп. столбцов (или наверное массивы в вба)вариант в файле считает "моментально" (с доп столбцом) Код
=ЕСЛИ(ЕНД(ПОИСКПОЗ(C4;C5:C$61000;));D4;"")
Автор - Nic70y Дата добавления - 13.05.2016 в 21:11