實際上我非常驚訝地發現我很難找到答案。我有2列包含一堆數字(在同一工作表上)。我只想讓代碼說出「如果列1中的值>列2中的值,對列中的每一行都這樣做」。我試過比較Excel VBA中的兩列(大於/小於或等於)
If sheet.range("B2:B35").Value > sheet.range("C2:C35").Value Then
'do something
End If
但是顯然它不能這樣工作。
實際上我非常驚訝地發現我很難找到答案。我有2列包含一堆數字(在同一工作表上)。我只想讓代碼說出「如果列1中的值>列2中的值,對列中的每一行都這樣做」。我試過比較Excel VBA中的兩列(大於/小於或等於)
If sheet.range("B2:B35").Value > sheet.range("C2:C35").Value Then
'do something
End If
但是顯然它不能這樣工作。
你需要考慮一個循環來檢查每一行與其他的獨立。
的想法是這樣的:
For i = 2 to 35
If Sheet.Range("B" & i).Value > Sheet.Range("C" & i).Value
'Do Something for Row i
End If
Next
的Value
可以,因爲它是隱含被省略,這意味着Sheet.Range("B" & i).Value
返回相同的結果作爲Sheet.Range("B" & i)
此外,有許多方法根據處理單元根據您的需求。
Range() 'Can be used to address multiple cells at the same time over a range
' or used to address a single cell as is done here
Cells() 'Can be used to address a single Cell by calling Cells("B" & i) as is
' done above, or can reference the row and column numerically like
' Cells(2, i)
與上述任何一種方法可以與Offset()
結合,如果你正在尋找一個給定的工作表中左右移動,如可用於:
Cells(2, 1).Offset(0, i) 'Addresses the Cell offset from "B1" by 0 columns and
' i rows.
我個人傾向於在這些情況下使用Cells(2, i)
,但我只是使用Range
,因爲我從示例代碼片段中直接借用了它。
我相信你需要依次檢查每對元素......但我不碰Excel,更不用說VBA :) – 2012-10-03 00:06:24
是的,因爲沒有表示行中所有內容的單個值2 - 35 –