在循环内使用偏移量和范围

Using an offset and range inside a loop

我知道这将是一个愚蠢的简单答案,但我现在快要死了...

For Each cell In rng2
    If cell.Offset(0, -13) And cell.Offset(0, -12).Value <> "" Then
        cell.Value = 1
    Else
        cell.Value = 0
    End If
Next cell

.offset .offset 在哪里,我怎么能说

If cell.offset(0,12:13)

我知道不是这样...这很简单,但是,正确处理这一部分将使我在整个工作簿中的 vba 代码中省去很多麻烦。

感谢提前帮助这位菜鸟!

可能是这样的:

For Each cell In rng2
    If Application.CountA(cell.Offset(0, -13).Resize(1, 2)) = 2 Then
        cell.Value = 1
    Else
        cell.Value = 0
    End If
Next cell

使用变体数组的替代方法

您可以通过乘法组合逻辑假设(True * True 对应于 -1 * -1 = 1 如果两个参考单元格都更大 "")并尝试以下操作:

'a) assign both offsets to variant 2-dim array
    Dim v: v = rng2.Offset(0, -13).Resize(, 2)
'b) get values
    Dim i As Long
    For i = 1 To UBound(v)     ' check each row
        v(i, 1) = (v(i, 1) > 0) * (v(i, 2) > 0)
    Next i
'c) write values
    rng2.Resize(, 1) = v