Можно ли автоматически добавлять ячейки из нового листа в формулу в Excel?

8869
Tom Wilkinson

Я хотел бы сделать новую финансовую таблицу для отслеживания расходов. Поскольку ведомости расходов создаются как и когда я не могу предварительно сгенерировать электронную таблицу для заполнения формулами. У меня есть сводный лист, в который добавляются итоги с других листов, и в настоящее время я создаю формулу вручную в конце месяца. Есть ли способ автоматического суммирования по нескольким листам и добавления новых листов к сумме при их создании?

Это возможно с помощью стандартного Excel или мне нужно будет использовать какой-нибудь VBA?

Я знаю, как добавить одну и ту же ячейку к нескольким листам (см. Excel - формулы для общего количества на нескольких листах? )

Этот скрипт vba является частью пути к тому, что я хочу сделать, но не совсем то, что я хочу сделать: Excel - импорт данных из ячейки автоматически при создании новой вкладки

PS Я не знаю VBA, но готов учиться. Я привык к C / Python.

2
Если вы суммируете диапазоны «резак печенья», вы можете вставить листы с именами «начало» и «конец» до и после всех листов, которые вы хотите объединить, затем использовать = SUM (начало: конец! A1) и убедиться, что вы всегда добавляете листы между «начальным» и «конечным» листами. Lord Peter 9 лет назад 0
Это то, что я рассматривал как быстрое и простое решение. Вероятно, что я буду реализовывать на март. Все еще надеемся, что будет способ автоматизировать большую часть этого. По сути, я хочу сделать довольно пуленепробиваемую версию для конечного пользователя, которую мне редко приходится редактировать. Tom Wilkinson 9 лет назад 0
Почему это решение не работает для вас? Ваши итоги на каждом листе находятся в разных местах? Raystafarian 9 лет назад 0
Это работает для меня лично. Я бы предпочел, однако, придумать более надежную систему, чтобы, если ее отдать кому-то другому, кто не создает новый лист между существующими, он все равно вычислит правильные значения. Кроме того, меня также интересует, можно ли этого достичь с точки зрения изучения Excel. Tom Wilkinson 9 лет назад 0
Я новичок в VBA - можете ли вы указать мне правильные ресурсы или предоставить рабочий сценарий? Tom Wilkinson 9 лет назад 0
Это зависит от того, хотите ли вы, чтобы это изменилось, когда вы говорите, или изменится, когда это произойдет. Я бы порекомендовал вам код для кнопки. Raystafarian 9 лет назад 0
Кнопка, которая создает новый лист? Tom Wilkinson 9 лет назад 0
Так что-то вроде "Рассчитать!" кнопка, которая просматривает все листы с определенным префиксом и составляет сумму на их основе? Tom Wilkinson 9 лет назад 0

1 ответ на вопрос

1
Raystafarian

Say, for instance, you have your running total in Sheet1!A1. Right, so now you create a macro you can run that will take all the totals from the other sheets and sum them.

Let's assume the totals for each sheet are on cell A10 -

Sub updatethesum() Dim ws As Worksheet Dim i As Double i = 0 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Sheet1" Then i = i + ws.Range("A10") End If Next Sheets("Sheet1").Range("A1") = i End Sub 

If you're worried someone will put a letter instead of a number in A10 you can restrict the input with something like this -

Sub updatethesum() Dim ws As Worksheet Dim i As Double i = 0 Dim bletter As Boolean For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Sheet1" Then bletter = IsNumeric(ws.Range("A10").Value) If bletter = True Then i = i + ws.Range("A10") End If End If Next Sheets("Sheet1").Range("A1") = i End Sub 
Работает как шарм! Теперь, чтобы проверить это на моих конечных пользователях Tom Wilkinson 9 лет назад 0
@ просто примечание, это не оставляет никаких доказательств того, что общая сумма верна. Вместо этого вы могли бы иметь строку, которая непрерывно добавляет каждый лист в качестве ссылки и вставляет его в виде формулы, тогда у вас будут доказательства. Raystafarian 9 лет назад 0
Еще один момент - для финансовых расчетов это не работает, так как Лонг округляет числа. Изменение Long на Double исправляет это. Tom Wilkinson 9 лет назад 0