【问题标题】:Using VBA to check if below cell is empty使用 VBA 检查下面的单元格是否为空
【发布时间】:2022-02-15 21:58:19
【问题描述】:

如何在 Excel 中使用 VBA 检查下面的单元格是否为空? 我想对特定范围内的所有值求和,但前提是下面的单元格不为空。

VBA 或任何其他方式有可能吗?

例子:

4 2 3 2 1
2   3 1

总和为:4 + 3 + 2 = 9。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个简单的代码

    If IsEmpty(ActiveCell.Offset(1, 0)) Then
    'your code here
    End If
    

    【讨论】:

      【解决方案2】:

      我会为此推荐一个公式

      公式

      =SUMPRODUCT((A1:E1)*(A2:E2<>""))
      

      快照

      如果你仍然想要 VBA,那么

      VBA

      Option Explicit
      
      Sub Sample()
          Dim rng As Range
          Dim Cl As Range
          Dim tot As Long
      
          Set rng = Range("A1:F1")
      
          For Each Cl In rng
              If Len(Trim(Cl.Offset(1))) <> 0 Then tot = tot + Cl.Value
          Next
      
          Debug.Print tot
      End Sub
      

      事实上,您可以在 VBA 中拥有多个版本。您也可以评估上述公式。例如

      Option Explicit
      
      Sub Sample()
          Debug.Print Evaluate("=SUMPRODUCT((A1:E1)*(A2:E2<>""""))")
      End Sub
      

      【讨论】:

      • @Siddarth Rout,非常好的方法。
      • @Cherrun:“”代表Not Equal To。所以我只是考虑在 A2:E2 范围内不为空的单元格。
      • @Siddharth Rout 我同意,巧妙地使用 SumProduct,但我认为您误解了 cherrun 关于“”的问题。 A2:E2&lt;&gt;"" 为每一列返回 True 或 False。然后,您使用 TrueFalse 作为整数。 Excel 将 True 视为 1,将 False 视为 0。因此 SumProduct 为 4*True + 2*False + 3*True + 2*True + 1*False = 4*1 + 2*0 + 3*1 + 2*1 + 1*0 = 9。聪明,但除非你知道布尔值被隐式转换为整数,否则难以理解。
      • @TonyDallimore:啊!在那种情况下,我误解了这个问题:)
      • @Siddharth Rout。我认为你的答案很漂亮,你展示了我永远不会渴望的知识深度,你在哪里找到时间来回答这么多问题,但有时我怀疑你忘记了你比我们其他人领先多远。但是,即使我对 cherrun 的真实问题是正确的,请继续努力;你的答案很高兴阅读。
      【解决方案3】:

      当从其他数据库导出数据时,我只使用“IsEmpty”时遇到了一些问题。这是我开发的功能:

      Function IsVacant(TheVar As Variant) As Boolean
        'LeandraG 2010
      
        IsVacant = False
      
        If IsEmpty(TheVar) Then IsVacant = True
        If Trim(TheVar) = "" Then IsVacant = True
        If Trim(TheVar) = "'" Then IsVacant = True
      
      
      End Function
      

      【讨论】:

        【解决方案4】:

        对于那些绝望的人:有时 Excel 单元格看起来是空的,但经过检查可能包含一些不可见的内容,例如空格字符。然后所有这些 IsEmpty 和 IsNull 函数对您没有帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多