簡體   English   中英

如何在VBA中執行3部分的IF語句?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM