是否可以將連續單元格值與單個單元格進行比較?例如:VBA中的連續單元格值
If Sheets("Sheet2").Range("E4:E6").Value = Sheets("Sheet1").Range("D4").Value Then
....
我試過,但顯示錯誤TYPEMISMATCH
是否可以將連續單元格值與單個單元格進行比較?例如:VBA中的連續單元格值
If Sheets("Sheet2").Range("E4:E6").Value = Sheets("Sheet1").Range("D4").Value Then
....
我試過,但顯示錯誤TYPEMISMATCH
嘗試
Sheets("Sheet2").Range("E4:E6") = Sheets("Sheet1").Range("D4").Value
如果沒有,那麼你需要一個循環:
c = true
for each i in Sheets("Sheet2").Range("E4:E6")
If i <> Sheets("Sheet1").Range("D4").Value then
c = false
Exit for
End if
Next
If c then
.....
表達Sheets("Sheet2").Range("E4:E6").Value
返回包含這些單元格中的值的二維數組。正如你所看到的,你不能用一個平等運算符來比較一個值。
如果你想看看是否能值存在,你可以使用匹配工作表函數這樣
Sub FindMatch()
Dim lMatch As Long
On Error Resume Next
lMatch = Application.WorksheetFunction.Match(Range("D4").Value, Range("E4:E6").Value, False)
On Error GoTo 0
If lMatch > 0 Then
Debug.Print "Value exists"
Else
Debug.Print "Not included"
End If
End Sub
如果你想,以確定是否在範圍內的所有值都是一樣的,你可以使用像這樣的Sumif
Sub FindAllMatch()
Dim dSum As Double
If Application.WorksheetFunction.Sum(Range("E4:E6")) = Application.WorksheetFunction.SumIf(Range("E4:E6"), Range("D4").Value) Then
Debug.Print "All match"
Else
Debug.Print "One doesn't match"
End If
End Sub
另一種選擇是Filter VBA函數,該函數返回按某些條件過濾的數組。過濾器需要一維數組和Range()。Value返回一個二維數組,因此您必須使用Transpose函數來進行該轉換。
Sub Findmatch2()
Dim vaOneD As Variant
Dim sMatch As String
sMatch = Range("D4").Value
vaOneD = Application.WorksheetFunction.Transpose(Range("E4:E6").Value)
If UBound(Filter(vaOneD, sMatch, True)) > -1 Then
Debug.Print "There's a match"
Else
Debug.Print "No match"
End If
End Sub
要檢查所有的價值都是一樣的,適當的行更改爲
If UBound(Filter(vaOneD, sMatch, True)) - LBound(Filter(vaOneD, sMatch, True)) = UBound(vaOneD) - LBound(vaOneD) Then
'sum'不適用於非數值單元值,您應該使用'countif'代替。比我的'for-loop'好得多。 ;) – glh 2013-03-11 10:19:15
是的,'COUNTIF'好得多。謝謝。 – 2013-03-11 13:53:22
你不能讓這個comaparison。 – 2013-03-05 11:55:59
@ user2063626,如果你很聰明,你可以看到我的答案。 – glh 2013-03-05 11:59:01
@glh哇...奇蹟...與細胞價值的單元格的comaring範圍是不可能的。 (「Sheet2」)。Range(「E4:E6」)。Value = Sheets(「Sheet1」)。Range(「D4」)。Value Then) – 2013-03-05 12:00:58