【问题标题】:Check if cell from the same row but different column isn't empty检查来自同一行但不同列的单元格是否不为空
【发布时间】:2016-12-21 08:42:47
【问题描述】:

所以我在 Excel 中有一个小脚本,它遍历列并检查单元格值,然后检查同一行但不同列中的单元格。 例如:我通过 C 列,如果 C8 不为空,那么我检查 A8 是否为空。但我不知道如何检查同一行的单元格。这是我的代码:

For Each xdata In range_data

If IsEmpty(xdata.Value) = False Then

    If IsEmpty(???????.Value) = True Then
        ......

    ElseIf IsEmpty(???????.Value) = False Then
        .....

    End If

End If

Next xdata

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    假设 xData 是一个 Range 变量,您有几个选择。您可以使用:

    If IsEmpty(Cells(xData.row, 1)
    

    ...1 是您要检查的列。您还可以使用:

    If IsEmpty(xData.Offset(0,-2))
    

    ...-2 是要计算到 xData 列左侧的列数,以获取要检查的值。最后,您可以使用:

    If IsEmpty(Range("A" & xData.row))
    

    ...其中"A" 是您要检查的列的字母。每种方法都有其优点和缺点 - Cells 方法允许您使用列号而不是字母,但有点难以阅读,Offset 方法允许您再次使用数字,但如果您更改 xData 的列和忘记更改可能导致错误的偏移值,Range 方法更易于阅读,但确实需要硬编码的字母值。

    【讨论】:

      【解决方案2】:

      有很多方法....这里有一个:

      Sub Silva()
          Dim range_data As Range, xdata As Range
          Set range_data = Range("C1:C10")
      
          For Each xdata In range_data
              v = xdata.Value
              If v <> "" Then
                  If xdata.offfset(0, -2).Value <> "" Then
                      'do something
                  Else
                      'do something else
                  End If
              End If
          Next xdata
      End Sub
      

      【讨论】:

      • 为什么需要vIf xdata.Value &lt;&gt; "" Then 的结果不会一样吗?
      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      相关资源
      最近更新 更多