Вопрос:
Работа с макросами excel, где я пытаюсь добавить значения ячейки из вышеперечисленных ячеек, чтобы вычислить общее значение. Вот как мои данные выглядят как
Здесь я хочу добавить выше значения ячейки для каждого столбца, чтобы вычислить сумму. Для этого я написал макрос следующим образом.
For cl = 2 To 5 Worksheets(5).Cells(4, cl).Formula = «=SUM(B4:B6)» Next cl
Это должно установить формулу для каждой ячейки в строке до 5 столбцов.
Но он устанавливает одну и ту же формулу для всех ячеек в строке, она должна получать изменение в соответствии с столбцом. Как установить формулу суммы для каждой ячейки для соответствующего столбца?
Лучший ответ:
Не уверен, что я понимаю ваш код. Кажется, что вы записываете в строку 4, но вы также хотите сделать сумму из строки 4 в строку 6. Это создаст круговую ссылку.
Предположим, что формула записывается в строку 3. Вы захотите использовать стиль ссылки R1C1, чтобы сделать ячейки суммированными относительно текущих ячеек.
Трюк, чтобы узнать, какая ссылка на использование:
- Получите новый рабочий лист, введите =SUM(B4:B6) в ячейку B3 и скопируйте вправо.
- Затем нажмите “Файл” > “Параметры” > “Формулы” и выберите Стиль ссылки R1C1.
- Теперь проверьте формулы на листе. Вы увидите следующее: =SUM(R[1]C:R[3]C)
Это то, что вам нужно в макросе.
For cl = 2 To 5 Worksheets(5).Cells(3, cl).FormulaR1C1 = «=SUM(R[1]C:R[3]C)» Next cl Ответ №1
Попробуйте что-то вроде этого.
For cl = 2 To 5 ColName = Left(Cells(1, cl).Address(False, False), 1 — (cl > 26)) Worksheets(5).Cells(4, cl).Formula = «=SUM(» & ColName & «4:» & ColName & «6)» Next cl Ответ №2
некоторые подробности для R1C1 и R [1] C [1] стиль в формулах.
Насколько я знаю, R [1] C [1] создает относительную ссылку, а R1C1 создает абсолютную ссылку. Но имейте в виду, что цифры для R [x] и C [y] являются смещением к ячейке, которая содержит формулу.
Это означает, что если вы хотите показать сумму A1: B4 в C5, код должен быть таким:
Worksheets(5).Cells(5, 3).FormulaR1C1 = «=SUM(R[-4]C[-2]:R[-1]C[-1])»
Если вы хотите сделать то же самое, но в конечном итоге с абсолютной ссылкой, aht будет выглядеть так.
Worksheets(5).Cells(5, 3).FormulaR1C1 = «=SUM(R1C1:R4C2)» Ответ №3
Вы можете использовать очень простую формулу, как показано ниже:
Sub sum_month() Sheets(«13»).Activate Range(«D2»).Formula = «=SUM(A1+A2+A3)» End Sub
А затем просто нажмите и перетащите ячейку, чтобы автоматически заполнить другие строки
Ответ №4
Для вашего случая вы можете использовать это:
For cl = 2 To 5 ColName = Left(Cells(1, cl).Address(0, 0), (Cells(1, cl).Column < 27) + 2) ValueSum = «=SUM(» & ColName & «4:» & ColName & «6)» Worksheets(5).Cells(4, cl).Formula = ValueSum Next Ответ №5
Я думаю, что вы можете просто ссылаться на весь диапазон формул, и Excel будет достаточно умен, чтобы настроить столбцы.
Без циклы:
Рабочие листы (5). Ячейки (4, кл).resize(1,4). Формулы = “= СУММА (B4: B6)”