vba, сумма на основе заголовка столбца - PullRequest
0 голосов
/ 10 июля 2020

Мне нужна ваша помощь с VBA! Я хочу написать код, который суммирует столбец «продажи» на разных 7 листах. Проблема в том, что столбец имеет разное расположение на каждом листе и количество строк c динами. Сумма должна быть в последней строке +1.

Я не очень хорошо разбираюсь в макросах, но думаю, мне следует начать с проверки i на 7 листов. Затем я должен суммировать диапазон на основе заголовка («Продажи»). Я не знаю, как все это написать ..

введите описание изображения здесь

1 Ответ

0 голосов
/ 10 июля 2020

Попробуйте следующий код, пожалуйста:

Sub SumSales()
  Dim sh As Worksheet, rngS As Range, lastRow As Long
  For Each sh In ActiveWorkbook.Sheets 'iterate through all sheets
    'find the cell having "Sales" text/value
    Set rngS = sh.Range(sh.Cells(1, 1), sh.Cells(1, _
        sh.Cells(1, Columns.count).End(xlToLeft).Column)).Find("Sales")
    'if the cell has been found (the cell range is NOT Nothing...)
    If Not rngS Is Nothing Then
        'Determine the last row of the found cell column:
        lastRow = sh.Cells(Rows.count, rngS.Column).End(xlUp).row
        'Write the Sum formula in the last empty cell:
        rngS.Offset(lastRow).formula = "=Sum(" & rngS.Offset(1).address & _
             ":" & sh.Cells(lastRow, rngS.Column).address & ")"
        sh.Range("A" & lastRow + 1).Value = "Sum of sales is:"
    Else
        'if any cell has been found, it returns in Immediate Window (Being in VBE, Ctrl + G) the sheet names not having "Sales" header:
        Debug.Print "No ""Sales"" column in sheet """ & sh.name & """."
    End If
  Next
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...