我已經對 excel 列中的兩個單元格進行了硬編碼,以計算第一個或第二個單元格的值是否為 1。它以這種方式作業(但也為每個適用的單元格寫出,因此效率低下):
If Range("D10").Value = 1 Or Range("D11").Value = 1 Then
x = x 1
Else
x = x 0
End If
我正在嘗試重構它。我的想法是使用 if 和 or 陳述句進行 for 回圈(類似于我當前的代碼),但收到語法錯誤。我的嘗試:
Sub refactor()
Dim x As Integer
x = 0
For Each c In Range("D2-D13").Cells
If c.Value =1 OR (c 1).Value = 1 Then
x = x 1
Else
x = x 0
End If
Range("A19") = x
End Sub
我能找到的只是其中包含 if 陳述句的回圈,但從未考慮添加的“或”條件。VBA對我來說是新的。有沒有辦法我可以編碼?
uj5u.com熱心網友回復:
如果您真的想像您發布的代碼一樣計算代碼的意義,更不用說代碼的意義了,我也放在這里
If Range("D10").Value = 1 Or Range("D11").Value = 1 Then
x = x 1
Else
x = x 0
End If
那么你可以使用這個代碼
Sub countCode()
Dim x As Long
Dim sngCell As Range
Dim rg As Range
Set rg = Range("D2:D13")
For Each sngCell In rg
If sngCell.Value = 1 Or sngCell.Offset(1).Value = 1 Then
x = x 1
End If
Next sngCell
Debug.Print x
End Sub
uj5u.com熱心網友回復:
for 回圈足以運行整個范圍它不需要“或 c.offset(1,0).value = 1”,因為用于任何一個條件的“或”運算子為真,它將允許運行代碼。
"if c.Value = 1 and c.Offset(1, 0).Value = 1 Then" = 這種情況用于如果兩個陳述句都為真,則僅當條件允許運行代碼時使用。你在找這個嗎?
Sub refactor()
Dim x As Integer
Dim c As Range
x = 0
For Each c In Range("D2:D13")
'if c.Value = 1 Or c.Offset(1, 0).Value = 1 Then'this line is same as below line
if c.value = 1 then
x = x 1
End If
Next c
Range("A19") = x
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407579.html
標籤:
上一篇:使用宏計算來自不同單元格的資料
下一篇:平均近距離GPS坐標
