在循环内使用偏移量和范围
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
我知道这将是一个愚蠢的简单答案,但我现在快要死了...
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