检查来自同一行但不同列的单元格是否为空

时间:2016-12-20 12:44:41

标签: excel vba excel-vba

所以我在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

2 个答案:

答案 0 :(得分:3)

假设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方法更容易阅读,但需要硬编码的字母值。

答案 1 :(得分: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