Excel 使用VBA检查下面的单元格是否为空
如何在Excel中使用VBA检查下面的单元格是否为空? 我想对特定范围内的所有值求和,但仅当下面的单元格不为空时 VBA或其他方式是否可能实现这一点 例如:Excel 使用VBA检查下面的单元格是否为空,excel,vba,Excel,Vba,如何在Excel中使用VBA检查下面的单元格是否为空? 我想对特定范围内的所有值求和,但仅当下面的单元格不为空时 VBA或其他方式是否可能实现这一点 例如: 4 2 3 2 1 2 3 1 总和为:4+3+2=9。我推荐一个公式 公式 =SUMPRODUCT((A1:E1)*(A2:E2<>"")) Option Explicit Sub Sample() Dim rng As Range Dim Cl As Range Dim tot As Lon
4 2 3 2 1
2 3 1
总和为:4+3+2=9。我推荐一个公式 公式
=SUMPRODUCT((A1:E1)*(A2:E2<>""))
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
=SUMPRODUCT((A1:E1)*(A2:E2“”)
快照
如果你还想要VBA的话
VBA
=SUMPRODUCT((A1:E1)*(A2:E2<>""))
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
选项显式
子样本()
变暗rng As范围
Dim Cl As范围
昏昏欲睡
设置rng=范围(“A1:F1”)
对于rng中的每个Cl
如果Len(修剪(Cl.Offset(1))为0,则tot=tot+Cl.值
下一个
调试。打印tot
端接头
事实上,在VBA中可以有许多版本。您也可以计算上述公式。比如说
Option Explicit
Sub Sample()
Debug.Print Evaluate("=SUMPRODUCT((A1:E1)*(A2:E2<>""""))")
End Sub
选项显式
子样本()
Debug.Print Evaluate(“=SUMPRODUCT((A1:E1)*(A2:E2)”)
端接头
试试这个简单的代码
If IsEmpty(ActiveCell.Offset(1, 0)) Then
'your code here
End If
当数据从其他数据库导出时,我在使用“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
@Siddarth Rout,非常好的方法。@Cherrun:“代表
不等于。所以我只是简单地考虑了A2:E2范围内不为空的单元格。@Siddharth Rout我同意,SumProduct的巧妙使用,但我认为你误解了cherrun关于“”的问题<代码>A2:E2”“
为每列返回True或False。然后使用True
或False
作为整数。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的真实问题是正确的,也要继续做好工作;你的答案读起来很愉快。