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

Вход

Регистрация

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

 

= Мир MS Excel/Изменение формулы макросом: добавление и удаление слагаемых - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Изменение формулы макросом: добавление и удаление слагаемых
Almost Дата: Среда, 11.11.2015, 16:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Добрый день!

Во вложении пример файла. Есть несколько компаний, их число меняется кнопками "Добавить" и "Удалить". В компании вручную заполняются данные, и зелёная ячейка считает сумму данных всех компаний. Поэтому в идеале должна содержать формулу.

Возможно ли сделать так, чтобы при добавлении компании, в формулу зелёной ячейки добавлялось соответствующее слагаемое (ссылка на данные добавленной компании), а при удалении компании соответственно убиралось?

Сложность: компании могут добавляться и удаляться в произвольном порядке.

Если так реализовать не получится, в крайнем случае сделаю кнопку на консолидацию, но это неудобное решение.
К сообщению приложен файл: 4912179.xls (39.0 Kb)
 
Ответить
СообщениеДобрый день!

Во вложении пример файла. Есть несколько компаний, их число меняется кнопками "Добавить" и "Удалить". В компании вручную заполняются данные, и зелёная ячейка считает сумму данных всех компаний. Поэтому в идеале должна содержать формулу.

Возможно ли сделать так, чтобы при добавлении компании, в формулу зелёной ячейки добавлялось соответствующее слагаемое (ссылка на данные добавленной компании), а при удалении компании соответственно убиралось?

Сложность: компании могут добавляться и удаляться в произвольном порядке.

Если так реализовать не получится, в крайнем случае сделаю кнопку на консолидацию, но это неудобное решение.

Автор - Almost
Дата добавления - 11.11.2015 в 16:09
_Boroda_ Дата: Среда, 11.11.2015, 16:15 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация: 6502 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А если формулу переписать вот так
Код
=СУММЕСЛИ(B4:B999;"данные";C4:C999)

или вот так можно
[vba]
Код
    r_ = Range("A" & Rows.Count).End(xlUp).Row
    Range("C1").FormulaLocal = "=СУММЕСЛИ(B4:B" & r_ & ";""данные"";C4:C" & r_ & ")"
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если формулу переписать вот так
Код
=СУММЕСЛИ(B4:B999;"данные";C4:C999)

или вот так можно
[vba]
Код
    r_ = Range("A" & Rows.Count).End(xlUp).Row
    Range("C1").FormulaLocal = "=СУММЕСЛИ(B4:B" & r_ & ";""данные"";C4:C" & r_ & ")"
[/vba]

Автор - _Boroda_
Дата добавления - 11.11.2015 в 16:15
МВТ Дата: Среда, 11.11.2015, 16:25 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Можно вычислять прямо в макросе и вставлять в ячейку результат [vba]
Код
Sub SumCompany()
Dim S As Double, I As Long
Dim arr: arr = Range("B4:C" & Cells(Rows.Count, 2).End(xlUp).Row).Value
For I = 1 To UBound(arr)
    If arr(I, 1) = "данные" Then S = S + arr(I, 2)
Next
    [C1] = S
End Sub
[/vba]


Сообщение отредактировал МВТ - Среда, 11.11.2015, 16:25
 
Ответить
СообщениеМожно вычислять прямо в макросе и вставлять в ячейку результат [vba]
Код
Sub SumCompany()
Dim S As Double, I As Long
Dim arr: arr = Range("B4:C" & Cells(Rows.Count, 2).End(xlUp).Row).Value
For I = 1 To UBound(arr)
    If arr(I, 1) = "данные" Then S = S + arr(I, 2)
Next
    [C1] = S
End Sub
[/vba]

Автор - МВТ
Дата добавления - 11.11.2015 в 16:25
Almost Дата: Среда, 11.11.2015, 16:46 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Спасибо за ответ, однако я не смогу сложить колонку целиком, извиняюсь что привёл слишком упрощённый пример. В реальности колонки тянутся вниз на сотни строк, и содержат разную информацию, которую выборочно нужно складывать, раздельно по строкам. Исправил пример, чтобы это было видно.

МВТ, компании добавляются с пустыми полями. Данные заполняются вручную после исполнения макроса. Можно сделать отдельный макрос для консолидации, запускаемый кнопкой по готовности. Я так и сделаю, если выяснится, что такую задачу нельзя автоматизировать разумным способом.
К сообщению приложен файл: 9340188.xls (39.5 Kb)
 
Ответить
Сообщение_Boroda_, Спасибо за ответ, однако я не смогу сложить колонку целиком, извиняюсь что привёл слишком упрощённый пример. В реальности колонки тянутся вниз на сотни строк, и содержат разную информацию, которую выборочно нужно складывать, раздельно по строкам. Исправил пример, чтобы это было видно.

МВТ, компании добавляются с пустыми полями. Данные заполняются вручную после исполнения макроса. Можно сделать отдельный макрос для консолидации, запускаемый кнопкой по готовности. Я так и сделаю, если выяснится, что такую задачу нельзя автоматизировать разумным способом.

Автор - Almost
Дата добавления - 11.11.2015 в 16:46
Roman777 Дата: Среда, 11.11.2015, 16:49 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Almost, так Вам _Boroda_ привёт правильный пример, поскольку можно
Код
=СУММЕСЛИ(B4:B999;"данные1";C4:C999)
в другой ячейке
Код
=СУММЕСЛИ(B4:B999;"данные2";C4:C999)


Много чего не знаю!!!!
 
Ответить
СообщениеAlmost, так Вам _Boroda_ привёт правильный пример, поскольку можно
Код
=СУММЕСЛИ(B4:B999;"данные1";C4:C999)
в другой ячейке
Код
=СУММЕСЛИ(B4:B999;"данные2";C4:C999)

Автор - Roman777
Дата добавления - 11.11.2015 в 16:49
Almost Дата: Среда, 11.11.2015, 16:59 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 42
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Уважаемые _Boroda_, и Roman777, спасибо! Не сразу понял, действительно, задача решена.
 
Ответить
СообщениеУважаемые _Boroda_, и Roman777, спасибо! Не сразу понял, действительно, задача решена.

Автор - Almost
Дата добавления - 11.11.2015 в 16:59
  • Страница 1 из 1
  • 1
Поиск:

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