заполнить формулы через VBA - PullRequest
0 голосов
/ 13 октября 2019

Попытка написать код, который добавляет числа из ячеек в столбце и повторяется до тех пор, пока в следующих столбцах не будет значений.

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

   Sub Button1_Click()

   Range("b1").Select
   ActiveCell.End(xlDown).Select
   Range("b1").Select
   ActiveCell.End(xlDown).Select
   Dim vStartRow As Integer
   vStartRow = 2
   Dim vEndRow As Integer
   vEndRow = ActiveCell.Row
   Cells(vEndRow + 1, 2).Formula = "=sum(b" & vStartRow & ":b" &              
   vEndRow & ")"
   End Sub

например,

        Sales1  Sales2  Sales3  Sales4
Thi     15      1       78      2
Helena  23      3       15      3
Gerard  30      5       66      4
Tom     18      16      20      5
Harry   20      27      28      6
Pete    16      36      45      7
Sam     45      41      16      8
John    27      20      23      9
Kerry   16      65      96      10
Fred    1       2       3       11
Sue     4       5       6       12
Dave    7       8       9       13
Emma    10      11      12      14
       232          

Код должен продолжать выполняться и выполнять суммирование, пока не будет значенийв следующем столбце. любая помощь будет оценена.

1 Ответ

0 голосов
/ 13 октября 2019

Вы можете сделать так, чтобы код определял количество используемых столбцов и циклически проходил по ним, или устанавливал их вручную.

В этом примере Excel будет автоматически считать столбцы.
Тогда он будетподсчитайте количество людей, предполагая, что вы хотите, чтобы итоги в одной строке.
Если вы хотите подсчитать строки каждого столбца в отдельности, просто переместите RowLenght в первую часть цикла и измените 1 до i.

Я постарался максимально полно включить вашу оригинальную идею, и у нас есть две переменные, которые мы можем установить вручную StartRow и StartColumn.

Sub Button1_Click()
Dim ColumnLenght As Long, RowLenght As Long, i As Long, ColumnLetter As String, StartRow As Long, StartColumn As Long

ColumnLenght = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
RowLenght = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
StartRow = 2
StartColumn = 2

For i = StartColumn To ColumnLenght
    ColumnLetter = Split(Cells(1, i).Address, "$")(1)
    Cells(RowLenght + 1, i).Formula = "=sum(" & ColumnLetter & StartRow & ":" & ColumnLetter & RowLenght & ")"
Next i

End Sub

Вот код в действии:

Example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...