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

Вход

Регистрация

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

 

= Мир MS Excel/Не считает сумму столбца после разделения таблицы - Мир MS Excel

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_, DrMini  
Не считает сумму столбца после разделения таблицы
Xaden Дата: Вторник, 03.06.2014, 13:53 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Всем доброго времени суток.
я в ВБА не силен, но поставили задачу, у меня есть макрос, который разбивает одну таблицу на несколько по номеру склада.
Так вот при обработки макроса суммы не меняются а остаются общими, как сделать, что бы при разделение сумма подсчитывалась правильно?
Файлы прикрепил.
ЗЫ в обработанном варианте желтым цветом пометил где сумма не отличаются от первоначального варианта.
 
Ответить
СообщениеВсем доброго времени суток.
я в ВБА не силен, но поставили задачу, у меня есть макрос, который разбивает одну таблицу на несколько по номеру склада.
Так вот при обработки макроса суммы не меняются а остаются общими, как сделать, что бы при разделение сумма подсчитывалась правильно?
Файлы прикрепил.
ЗЫ в обработанном варианте желтым цветом пометил где сумма не отличаются от первоначального варианта.

Автор - Xaden
Дата добавления - 03.06.2014 в 13:53
Xaden Дата: Вторник, 03.06.2014, 13:54 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
что то не прикрепились файлы
К сообщению приложен файл: 6214292.xls (46.0 Kb) · 7340410.xls (46.5 Kb)
 
Ответить
Сообщениечто то не прикрепились файлы

Автор - Xaden
Дата добавления - 03.06.2014 в 13:54
AlexM Дата: Вторник, 03.06.2014, 14:21 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Изменил формулы для суммы, например для столбца К
Код
=СУММ(ИНДЕКС(K$1:K10;МАКС(($C$1:$C10="Клиент:")*СТРОКА($A$1:$A10))):K10)
Формула массива.
Ищем ближайшую позицию слова "Клиент" и от нее считаем сумму
К сообщению приложен файл: 6214292_new.xls (46.0 Kb)



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


Сообщение отредактировал AlexM - Вторник, 03.06.2014, 14:24
 
Ответить
СообщениеИзменил формулы для суммы, например для столбца К
Код
=СУММ(ИНДЕКС(K$1:K10;МАКС(($C$1:$C10="Клиент:")*СТРОКА($A$1:$A10))):K10)
Формула массива.
Ищем ближайшую позицию слова "Клиент" и от нее считаем сумму

Автор - AlexM
Дата добавления - 03.06.2014 в 14:21
Xaden Дата: Вторник, 03.06.2014, 14:49 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
то есть Вы не меняли сам скрипт, а в самой ячейки прописали формулу?
Боже как я Вам благодарен, спасибо огромное, я несколько дней бился как сделать это, и думал ведь, что нужно прописать именно в самой ячейки, но упорно все равно ковырял сам макрос.
Ура ура ура hands
 
Ответить
Сообщението есть Вы не меняли сам скрипт, а в самой ячейки прописали формулу?
Боже как я Вам благодарен, спасибо огромное, я несколько дней бился как сделать это, и думал ведь, что нужно прописать именно в самой ячейки, но упорно все равно ковырял сам макрос.
Ура ура ура hands

Автор - Xaden
Дата добавления - 03.06.2014 в 14:49
_Boroda_ Дата: Вторник, 03.06.2014, 15:13 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Немного более другая формула
Код
=СУММ(K$8:K10)-СУММЕСЛИ(C$8:C10;"Итого:";K$8:K10)*2
К сообщению приложен файл: 6214292_3.xls (46.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНемного более другая формула
Код
=СУММ(K$8:K10)-СУММЕСЛИ(C$8:C10;"Итого:";K$8:K10)*2

Автор - _Boroda_
Дата добавления - 03.06.2014 в 15:13
Xaden Дата: Вторник, 03.06.2014, 15:21 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
ерунда выходит =( первый вариант работает, но суть такая, что данная форма выходит с БД, может выйти 1 позиция и 1 склад, может выйти 100 позиций и 5 складов, если я в шаблон вставляю первую формулу выходит трабла, при выводи накладной с БД в ексель формула не срабатывает =))) короче буду думать дальше, хотя бы уже наставили на пусть истинный.
На всякий прикреплю фаил, это шаблон для БД в самом шаблон прописано просто sum, тогда все отлично, а если формула, то воспринимать не хочет
К сообщению приложен файл: AZ_prn004.xls (41.0 Kb)
 
Ответить
Сообщениеерунда выходит =( первый вариант работает, но суть такая, что данная форма выходит с БД, может выйти 1 позиция и 1 склад, может выйти 100 позиций и 5 складов, если я в шаблон вставляю первую формулу выходит трабла, при выводи накладной с БД в ексель формула не срабатывает =))) короче буду думать дальше, хотя бы уже наставили на пусть истинный.
На всякий прикреплю фаил, это шаблон для БД в самом шаблон прописано просто sum, тогда все отлично, а если формула, то воспринимать не хочет

Автор - Xaden
Дата добавления - 03.06.2014 в 15:21
Xaden Дата: Вторник, 03.06.2014, 15:54 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
все же это надо прописать в макросе, что бы при разделение он начинал выводить суммы.
 
Ответить
Сообщениевсе же это надо прописать в макросе, что бы при разделение он начинал выводить суммы.

Автор - Xaden
Дата добавления - 03.06.2014 в 15:54
AlexM Дата: Вторник, 03.06.2014, 17:23 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Выходит программа связи БД и Excel вставляет формулу вместо sum.
Ваш макрос должен найти эту формулу и заменить на другую, а потом делить на отдельные накладные



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеВыходит программа связи БД и Excel вставляет формулу вместо sum.
Ваш макрос должен найти эту формулу и заменить на другую, а потом делить на отдельные накладные

Автор - AlexM
Дата добавления - 03.06.2014 в 17:23
Xaden Дата: Вторник, 03.06.2014, 17:32 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
а не проще перед разбивкой прописать формулу, которая найдет слово "Итого" и напротив этого слова вставит сумму.
То есть в самом макросе ничего нет, примеры я скинул. Если прописать такую формулу как я предлагаю, теоретически она ведь должна заменить ту, которая прописана в ячейки?
единственное я не оччень понимаю как реализовать задумку, примерный код есть, но меня все время сбивает с толку, что диапазон подсчета будет разным (от 1 до 1000 строк).
Простите школьника за глупые вопросы.
 
Ответить
Сообщениеа не проще перед разбивкой прописать формулу, которая найдет слово "Итого" и напротив этого слова вставит сумму.
То есть в самом макросе ничего нет, примеры я скинул. Если прописать такую формулу как я предлагаю, теоретически она ведь должна заменить ту, которая прописана в ячейки?
единственное я не оччень понимаю как реализовать задумку, примерный код есть, но меня все время сбивает с толку, что диапазон подсчета будет разным (от 1 до 1000 строк).
Простите школьника за глупые вопросы.

Автор - Xaden
Дата добавления - 03.06.2014 в 17:32
AlexM Дата: Вторник, 03.06.2014, 17:39 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Надо найти не формул, а ячейку с ней. я не правильно выразился.[vba]
Код
Range("K7").End(xlDown)
[/vba] Это как раз она и есть.[vba]
Код
Range("K7").End(xlDown).Formula = "xxx"
[/vba]Эта строка пропишет ххх в ячейку с формулой. Осталось формулу приспособить в код.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеНадо найти не формул, а ячейку с ней. я не правильно выразился.[vba]
Код
Range("K7").End(xlDown)
[/vba] Это как раз она и есть.[vba]
Код
Range("K7").End(xlDown).Formula = "xxx"
[/vba]Эта строка пропишет ххх в ячейку с формулой. Осталось формулу приспособить в код.

Автор - AlexM
Дата добавления - 03.06.2014 в 17:39
AlexM Дата: Вторник, 03.06.2014, 18:15 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Попробуйте в начало макроса вставить строки[vba]
Код
Dim iRow As Long
iRow = Range("K7").End(xlDown).Row - 1
Range("K7").End(xlDown).FormulaArray = "=SUM(INDEX(K$1:K" & iRow & ",MAX(($C$1:$C" & iRow & "=""Клиент:"")*ROW($A$1:$A" & iRow & "))):K" & iRow & ")"
[/vba]
После получения накладной из БД запускаете макрос.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеПопробуйте в начало макроса вставить строки[vba]
Код
Dim iRow As Long
iRow = Range("K7").End(xlDown).Row - 1
Range("K7").End(xlDown).FormulaArray = "=SUM(INDEX(K$1:K" & iRow & ",MAX(($C$1:$C" & iRow & "=""Клиент:"")*ROW($A$1:$A" & iRow & "))):K" & iRow & ")"
[/vba]
После получения накладной из БД запускаете макрос.

Автор - AlexM
Дата добавления - 03.06.2014 в 18:15
Xaden Дата: Вторник, 03.06.2014, 18:21 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
простите за скудный ум, но я не очень понимаю, чем мне помогут "xxx" ??? вместо суммы
 
Ответить
Сообщениепростите за скудный ум, но я не очень понимаю, чем мне помогут "xxx" ??? вместо суммы

Автор - Xaden
Дата добавления - 03.06.2014 в 18:21
AlexM Дата: Вторник, 03.06.2014, 18:29 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
чем мне помогут "xxx" ??? вместо суммы
А вы читали Сообщение №11?



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
чем мне помогут "xxx" ??? вместо суммы
А вы читали Сообщение №11?

Автор - AlexM
Дата добавления - 03.06.2014 в 18:29
Xaden Дата: Вторник, 03.06.2014, 18:32 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
прошу прощение, читал после того, как отправил свое сообщение, сейчас буду пробовать вставить, надеюсь все получится.
 
Ответить
Сообщениепрошу прощение, читал после того, как отправил свое сообщение, сейчас буду пробовать вставить, надеюсь все получится.

Автор - Xaden
Дата добавления - 03.06.2014 в 18:32
Xaden Дата: Среда, 04.06.2014, 09:27 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо Вам огромное, только сегодня утром смог протестировать, все работает отлично. hands
Хотел бы попросить, если Вас не затруднит, объяснить как работает формула, а то своими познаниями такую формулу понять не могу =(
 
Ответить
СообщениеСпасибо Вам огромное, только сегодня утром смог протестировать, все работает отлично. hands
Хотел бы попросить, если Вас не затруднит, объяснить как работает формула, а то своими познаниями такую формулу понять не могу =(

Автор - Xaden
Дата добавления - 04.06.2014 в 09:27
AlexM Дата: Среда, 04.06.2014, 11:33 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Код
=СУММ(ИНДЕКС(K$1:K10;МАКС(($C$1:$C10="Клиент:")*СТРОКА($A$1:$A10))):K10)

Эта формула для ячейки К11. В формуле использованы диапазоны от первой строки до строки, которая на 1 меньше
Фрагмент формулы
Код
($C$1:$C10="Клиент:")*СТРОКА($A$1:$A10)
создает массив из номеров строк, в которых есть текст "Клиент:" Пока накладные не поделены в этом массиве всего один номер строки. Разумеется функция МАКС его и выбирает.
Когда накладная разделена, то для первой накладной ничего не поменялось, а для второй в массиве уже два номера и функция МАКС выбирает больший номер. По этому номеру определяется начальная ячейка диапазона суммирования, а конечная на строку выше самой формулы.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Код
=СУММ(ИНДЕКС(K$1:K10;МАКС(($C$1:$C10="Клиент:")*СТРОКА($A$1:$A10))):K10)

Эта формула для ячейки К11. В формуле использованы диапазоны от первой строки до строки, которая на 1 меньше
Фрагмент формулы
Код
($C$1:$C10="Клиент:")*СТРОКА($A$1:$A10)
создает массив из номеров строк, в которых есть текст "Клиент:" Пока накладные не поделены в этом массиве всего один номер строки. Разумеется функция МАКС его и выбирает.
Когда накладная разделена, то для первой накладной ничего не поменялось, а для второй в массиве уже два номера и функция МАКС выбирает больший номер. По этому номеру определяется начальная ячейка диапазона суммирования, а конечная на строку выше самой формулы.

Автор - AlexM
Дата добавления - 04.06.2014 в 11:33
Xaden Дата: Среда, 04.06.2014, 12:13 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
спасибо за пояснение =) формула работает отлично.
Правда в 2003 офисе ексель плюется на циклические ссылки, пытаюсь найти как исправить это.
 
Ответить
Сообщениеспасибо за пояснение =) формула работает отлично.
Правда в 2003 офисе ексель плюется на циклические ссылки, пытаюсь найти как исправить это.

Автор - Xaden
Дата добавления - 04.06.2014 в 12:13
Xaden Дата: Среда, 04.06.2014, 12:45 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
и с этим вопрос решен, дописал в макрос одну строчку
Application.Iteration = True
вроде как помогла для 2003 года что бы не выходили предупреждения о циклических ссылках.
 
Ответить
Сообщениеи с этим вопрос решен, дописал в макрос одну строчку
Application.Iteration = True
вроде как помогла для 2003 года что бы не выходили предупреждения о циклических ссылках.

Автор - Xaden
Дата добавления - 04.06.2014 в 12:45
AlexM Дата: Среда, 04.06.2014, 13:14 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
в 2003 офисе ексель плюется на циклические ссылки
у меня только 2003 есть. Не ругается.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
в 2003 офисе ексель плюется на циклические ссылки
у меня только 2003 есть. Не ругается.

Автор - AlexM
Дата добавления - 04.06.2014 в 13:14
Xaden Дата: Среда, 04.06.2014, 13:21 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
у Вас скорей всего стоит в параметрах - вычисления, стоит галочка "итерации", если она есть, то проблем с формулами нет, а вот если ее нет начинает плеваться.
 
Ответить
Сообщениеу Вас скорей всего стоит в параметрах - вычисления, стоит галочка "итерации", если она есть, то проблем с формулами нет, а вот если ее нет начинает плеваться.

Автор - Xaden
Дата добавления - 04.06.2014 в 13:21
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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