подсчет данных на нескольких листах - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть этот код, где я хочу посчитать количество ячеек с данными в столбце.Но проблема в том, что мне нужно сосчитать эти ячейки во всех книгах.Так, например, у меня есть две рабочие книги: WB1 и WB2.У меня есть лист WS1 с данными в A1, A2, A3, A4 и лист WS2 с данными в A1, A2.Итак, мой вывод должен показывать 6. Но у меня проблемы с тем, как я могу это посчитать?У меня есть следующий код:

Option Explicit

Private Sub CommandButton1_Click()

Dim paths(), wbs() As Workbook
Dim x As Integer
Dim sh, rn, k
paths = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", MultiSelect:=True, Title:="Please browse all the Rawdata files")
For x = 1 To UBound(paths)
    ReDim wbs(UBound(paths))
    Set wbs(x) = Workbooks.Open(paths(x))

    Set sh = wbs(x).Sheets("Role ID - Description")
    Set rn = sh.UsedRange
    k = rn.Rows.Count + rn.Row - 1 - 1
    wbs(x).Close
Next

End Sub

1 Ответ

0 голосов
/ 27 декабря 2018

Вы не ведете свой счетчик от листа к листу для рабочей книги (например, k = k + 1 для итерации на 1).Внутри вашей рабочей книги вы бы хотели что-то вроде:

dim i as long, k as long, lr as long
With Workbook("blah")
    For i = 1 to .sheets.count
        With .Sheets(i)
            lr = .cells(.rows.count,1).end(xlup).row
            k = k + lr
        End with
    Next i
    'output k to some destination
    k=0
End with

Edit1:

Добавление сценария подсчета согласно рекомендации Куби (не проверено):

dim i as long, k as long, cnta as long
With Workbook("blah")
    For i = 1 to .sheets.count
        With .Sheets(i)
            cnta = application.counta(.columns(1))
            k = k + cnta
        End with
    Next i
    'output k to some destination
    k=0
End with
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...