【问题标题】:Looping through worksheets and trying to count the data in columns循环工作表并尝试计算列中的数据
【发布时间】:2015-11-04 06:15:05
【问题描述】:

我有一个十张工作簿。在工作表 1 中,我想列出工作表名称(工作表 3 到 10)、工作表中的列标题值(仅限第 8 列及以后)以及该列中包含数据的单元格的数量。

我的代码适用于这三个要求中的两个。在我的工作表 1(名为:SheetName Columns)上,我在 A 列中获得工作表名称,在 B 列中获得列标题,但是没有任何运气获得该工作表/列的数据行数。

在我的工作表 1 上,A 列在该工作表上的第 7 列之后的每列数都会重复,这很好。

Sub ListColumnHeadings()

Dim cNbrs As Long, i As Integer, tr As Long, tc As Long, wst As Worksheet
Dim charList(300, 300) As String

Dim ws As Worksheet, OutputRow As Long
Dim myRange As Range
Dim NumRows As Integer
Dim colNbr As Range

Set shSkip1 = ThisWorkbook.Sheets("SheetName Record Cnt")
Set shList = ThisWorkbook.Sheets("SheetName Columns")

OutputRow = 1
On Error Resume Next

For Each ws In Worksheets
  If ws.Name <> shList.Name And ws.Name <> shSkip1.Name Then

    cNbrs = ws.Range("A1").CurrentRegion.Columns.Count

    For i = 8 To cNbrs
      shList.Cells(OutputRow, "A").Value = ws.Name
      shList.Cells(OutputRow, "B").Value = ws.Cells(1, i)

      Set myRange = ws.Columns(i).Select

      NumRows = ws.Application.WorksheetFunction.CountA(myRange)
      If NumRows > 0 Then
        shList.Cells(OutputRow, "C").Value = NumRows
      End If

      OutputRow = OutputRow + 1
    Next i

  End If
Next ws


End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    因为你使用了Set myRange...,你不需要.Select它。只需将该行更改为Set myRange = ws.Columns(i)

    如果你想离开.Select,那么下一行应该是 NumRows = ws.application.worksheetfunction.counta(selection),但它强烈推荐你avoid using .Select,仅供参考。

    【讨论】:

    • 值得注意的是,如果 OP 没有使用On Error Resume Next,错误会更容易看到和调试。
    • @nwhaught - 我知道我不使用这些语句是有原因的(它们可以隐藏一些用于调试的信息),好电话!
    • 太棒了,这个小调整使它完美运行。我只是在学习这个 VBA,似乎有很多函数和属性来弄清楚它们是如何工作的。再次感谢,我确实删除了“on error resume next”声明...
    • @DavidKn - 我发现使用宏记录器对学习 VBA 有很大帮助。记录一些平凡的任务,并尝试对其进行一些更改……由于宏记录器会在代码中准确记录您的步骤,因此请尝试学习如何更改它并使其更具动态性。当然,当您遇到困难时,Google 和 SO 是一个很好的资源。
    • @BruceWayne - 将使用宏记录器和调试器。再次感谢您的快速回复和帮助!
    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多