#excel #cell
#excel #ячейка
Вопрос:
Есть ли способ суммировать все значения одной и той же ячейки на нескольких листах (вкладке), название каждой вкладки — дата, и отобразить суммированное значение в мастер-таблице?
Например:
В настоящее время я использую эту формулу =SUM(INDIRECT("'*-"amp;MONTH(C2)amp;"-2020'!$E$3"))
в ячейке под ячейкой «Октябрь-2020», как показано на рисунке ниже, и я сделаю то же самое для 20 ноября и 20 декабря.
Как вы можете видеть, я получаю эту ошибку «#REF!». В настоящее время у меня есть две вкладки, из которых я пытаюсь получить значения ячеек «$ E $ 3», «13-10-2020» и «14-10-2020». Однако, если у меня есть только один лист (скажем, только «14-10-2020»), я могу получить значение.
Кто-нибудь знает, что происходит с моей формулой? Почему это работает, когда есть только один лист (вкладка) для чтения, но не работает, когда есть несколько листов (вкладок), даже я использовал «*» для включения всех дат.
Пожалуйста, посоветуйте. Спасибо в расширенном
Ответ №1:
Я думаю, это должно решить вашу проблему:
Option Explicit
Sub sub_sum_up_months()
Dim wks As Worksheet
Dim nr_month As Integer, nr_year As Integer
Dim str_month As String, str_year As String
Dim c As Integer
Dim my_Sum As Double
For c = 3 To 5 ' Iterating over the columns "C" to "E"
my_Sum = 0
nr_month = month(Worksheets("MasterSheet").Cells(2, c).Value)
If nr_month < 10 Then
str_month = "0" amp; nr_month
Else
str_month = CStr(nr_month)
End If
nr_year = Year(Worksheets("MasterSheet").Cells(2, c).Value)
str_year = CStr(nr_year)
For Each wks In ThisWorkbook.Worksheets
If Right(wks.Name, 4) = str_year And Left(Right(wks.Name, 7), 2) = str_month Then
my_Sum = my_Sum wks.Cells(3, 5) 'cells(3,5) is "E3"
End If
Next wks
Worksheets("MasterSheet").Cells(3, c).Value = my_Sum
Next c
End Sub
Ответ №2:
Вы можете использовать функцию sum .
Следуйте этому шаг за шагом, и это сработает.
В вашем мастер-листе C3 введите =Sum(
Щелкните на листе 13-10-2020 и ячейке E3.
Теперь нажмите и удерживайте shift. Щелкните на последнем листе, который является октябрем, и нажмите Ввод.
Теперь вы должны получить сумму всех E3 в октябрьских листах.
Насколько я знаю, нет формулы для выполнения этой динамики, но я совершенно уверен, что это можно сделать в VBA, если имена листов соответствуют шаблону.
Комментарии:
1. Андреас, спасибо за ваше предложение. Да, вы правы, мое требование довольно динамичное, потому что я создал кнопку (не показанную в вопросе), которая будет генерировать новый лист, каждый раз, когда я нажимаю ее, однажды, один лист. Итак, через два дня я снова нажимаю кнопку, у меня будет лист с именем «15-10-2020». Нет ли способа, которым формула может достичь того, чего я хочу, кроме использования вашего метода? Спасибо!
2. Я сомневаюсь в этом. Я считаю, что вам нужно использовать VBA для решения этой проблемы. Значит, через год в этой книге будет 366 листов? В этом случае я считаю, что код VBA для этого будет довольно медленным.
3. Привет, Андреас, да, за один год будет 366 листов. Я посмотрю, смогу ли я найти какое-либо решение VBA для решения моей проблемы. Спасибо!