簡體   English   中英

VBA宏幫助需要Excel

[英]VBA Macro help need for Excel

您好,我希望這會有意義,

我發現此腳本中,如果一個字母或數字在一個單元格中,它將在另一個單元格中輸入一個值

我想知道如何為它添加多個規則。目前,如果在單元格中輸入C或9,那么它將產生句子“此處將顯示單詞”

我希望它顯示在不同的單元格而不是相鄰的單元格中,而且我希望能夠在列表中添加不同的字母以輸出不同的值。

例如

當宏在列E中運行時,單元格在列A中具有此輸出

C或9“ Word0”

HELLO或GOODBYE“ Word1”

粉色或黃色“ Word2”

等等,任何幫助都將非常有用,因為我是VB和Macros的新手。

下面的代碼只適用於C或9,我認為我可以添加.Forumula到下面的代碼中以添加更多單詞,但是沒有用

Sub CheckValues()
    Application.ScreenUpdating = False
    With Range("A2", Range("A" & Rows.Count).End(xlUp)).Offset(, 1)
        .Formula = "=IF(MIN(FIND({""C"",9},A2&""C9""))<=LEN(A2),""Word0"","""")"
        .Value = .Value
    End With
    Application.ScreenUpdating = True
End Sub

如果您要使用VBA方法,則不需要使用.Formula VBA具有Select Case構造,可讓您評估表達式並根據表達式的結果執行一系列選擇。

嘗試這個:

Sub CheckValues()

    Application.ScreenUpdating = False

    Dim startRow As Integer
    startRow = 2
    Dim endRow As Integer
    endRow = Range("A2").End(xlDown).row

    Dim row As Integer
    Dim word As String

    For row = startRow To endRow

        Select Case Split(Cells(row, 1).Value, " ")(0)

            Case "C", "9"
                word = "Word0"
            Case "HELLO", "GOODBYE"
                word = "Word1"
            Case "Pink", "Yellow"
                word = "Word2"
            Case Else
                word = ""

        End Select

        Cells(row, 5).Value = word

    Next row

    Application.ScreenUpdating = True

End Sub

在為a列添加更多選項時,只需重復Case *expression*模式。

或者,您可以只修改現有公式,然后執行不帶循環的操作:

Sub SO()

With Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row).Offset(, 3)
    .FormulaR1C1 = "=IFERROR(""Word""&ROUNDDOWN((MATCH(LEFT(RC[-3],SEARCH("" "",RC[-3])-1),{""C"",""9"",""HELLO"",""GOODBYE"",""Pink"",""Yellow""},0)/2)-0.1,0),"""")"
    .Value = .Value
End With

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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