[英]How to do a 3-part IF statement in VBA?
'8
If Not IsEmpty(Range("A7")) And Range("C7") = "\" Then
Range("W7") = "\"
ElseIf Not IsEmpty(Range("A7")) And Range("C7") <> "\" Then
Range("W7") = "\L"
ElseIf IsEmpty(Range("A7")) Then
Range("W7") = ""
End If
With Sheets("DL Data")
.Range("W7:W" & .Cells(.Rows.Count, "A").End(xlUp).Row).Formula = "\L"
End With
我似乎無法弄清楚WITH部分,或者也許我一無所獲。 我在這里試圖做的是這樣的:
如果A7不為空且等於“ \\”,則W7等於“ \\”,如果A7不為空且不等於“ \\”則W7等於“ \\ L”,如果A7為空,則W7等於空白
然后,我希望這樣做來搜索“列”並給我適當的答案,在必要時插入空格,在必要時插入“ \\”,並在必要時插入“ \\ L”。
希望我在這里讓自己更清楚,謝謝您提前提供的所有幫助!
問候,
亞茨
如果要在整個列中運行它,則需要將相同的If-block嵌套到循環中:
With Sheets("DL Data")
For j = 7 To .Range("A7").End(xlDown).Row
If .Range("A" & j) <> "" And .Range("C" & j) = "\" Then
.Range("W" & j) = "\"
ElseIf .Range("A" & j) <> "" And .Range("C" & j) <> "\" Then
.Range("W" & j) = "\L"
ElseIf .Range("A" & j) = "" Then
.Range("W" & j) = ""
End If
Next j
End With
警告:我已按照您當前的執行方式進行操作; 但是,如果您的列“ A”之間可能有一些空單元格(這將解釋ElseIf .Range("A" & j) = ""
)的存在,請注意計數器.Range("A7").End(xlDown).Row
將在第一個空單元格處停止。 您可能希望將計數器編入一個始終填充的列中(例如,數據集的記錄ID)。
With
只是一個縮寫。
例如
With Sheets("DL Data")
.Range("W7:W" & .Cells(.Rows.Count, "A").End(xlUp).Row).Formula = "\L"
End With
相當於
Sheets("DL Data").Range("W7:W" & Sheets("DL Data").Cells(Sheets("DL Data").Rows.Count, "A").End(xlUp).Row).Formula = "\L"
您需要循環才能將此條件應用於所有行,例如:
Dim i as Integer
For i = 7 To Sheets("DL Data").Range("A7").End(xlDown).Row
If Not IsEmpty(Range("A" & i)) And Range("C" & i) = "\" Then
Range("W" & i) = "\"
ElseIf Not IsEmpty(Range("A" & i)) And Range("C" & i) <> "\" Then
Range("W" & i) = "\L"
ElseIf IsEmpty(Range("A" & i)) Then
Range("W" & i) = ""
End If
Next i
此代碼更新將根據您的公式更新W
列。 我對If
語句進行了一些優化,以減少冗余。
另外,為了說明起見,我包括了兩個With
塊。
With Sheets("DL Data")
Dim row As Long
For row = 7 To .Cells(.Rows.Count, "A").End(xlUp).Row)
With .Range("A" & row)
' IF A is empty THEN W equals blank
If .Value = "" Then
Range("W" & row).Value = ""
' IF A is not empty AND it equals "\" THEN W equals "\"
If .Value = "\" Then
Range("W" & row).Value = "\"
' IF A is not empty AND it does not equal "\" THEN W equals "\L"
' A is not empty (first condition checked above).
ElseIf .Value <> "\"
Range("W" & row).Value = "\L"
End If
End With
Next
End With
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.