【问题标题】:Counting upward in column until blank?在列中向上计数直到空白?
【发布时间】:2013-02-04 03:12:56
【问题描述】:

我有一列,其中包含几行数据,然后是一个空白单元格。

我需要一种方法来向上计数列中的行,直到出现空白单元格并使用VBA 对数字求和。有什么想法吗?

【问题讨论】:

  • 我尝试过使用 CurrentRegion 但是如果单元格旁边有数据它不起作用,我想使用 VBA
  • 你试过xlUp吗?编辑:你想试试吗?

标签: excel vba


【解决方案1】:

我不是 100% 确定你在问什么。您说“对数字求和”,但没有指定要求和的数字是计算的行数还是要对找到的单元格的值求和。

-编辑-

试试这个: 这将从底行开始向上计数,直到找到一个空白单元格 一旦找到一个空白单元格,它将汇总最后一个空白单元格和当前空白单元格之间的单元格。

-编辑2-

在列标题下的行中添加了插入,因此第一行也被求和。

Sub CountUp()
    Dim TotalRows As Long
    Dim TotalCols As Long
    Dim Col As Long
    Dim i As Long
    Dim n As Long

    Rows(2).Insert Shift:=xlDown
    TotalRows = ActiveSheet.UsedRange.Rows.Count
    TotalCols = ActiveSheet.UsedRange.Columns.Count
    'Assumes Data you want to sum is in the first column
    Col = 1

    Cells(TotalRows, Col).Select
    For i = TotalRows To 1 Step -1
        If Cells(i, Col).Value <> "" Then
            n = n + 1
        Else
            Cells(i, Col).Formula = "=SUM(" & Cells(i + 1, Col).Address(False, False) & ":" & Cells(i + n, Col).Address(False, False) & ")"
            n = 0
        End If
    Next
End Sub

【讨论】:

  • 还有一件事,是否有可能将第一行视为空白?它实际上不会是空白的,但我认为它与脚本混淆了。
  • 当然,您希望它插入新行还是应该覆盖第一行中包含的数据并且您是否有列标题?
  • 我有标题是的,理想情况下应该插入一行
  • 好的,我更新了代码,在列标题下插入一行。
【解决方案2】:

假设列 F 为列并且它有编号。试试下面的代码。

Sub sumAndcount()
    Dim recCount As Long
    Dim recSum As Long

    Range("A65000").Value = "=COUNT(F:F)"
    recCount = Range("A65000").Value

    Range("A65000").Value = "=SUM(F:F)"
    recCount = Range("A65000").Value
End Sub

【讨论】:

    猜你喜欢
    • 2022-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2018-04-23
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多