1

私は完全に迷っており、専門家のアドバイスが必要です。

にはキーワードでいっぱいの列があり、すべての単語の前に「+」を追加するマクロを使用できるようにしたいと考えています。ただし、必要のない一連の単語は例外です。

したがって、基本的に VBA コードには、「the、for、with などの単語をスキップする」などと言うことができる場所が必要です。

編集:すべてのセルの先頭に追加できるコードしか見つかりませんでした。それは近いですが、正確には私が探しているものではありません。必要なものに近いものは見つかりませんでした。

Sub Add_Plus() 

Dim r As Range 

With Selection 

    For Each r In Selection 
        r.Value = "+" & r.Value 
    Next 

End With 

End Sub 

ダブルエディット -

あなたたちは素晴らしいです!私たちは非常に近いです。例外として指定されたものを除いて、各セルのすべての単語に + 記号を追加するマクロが必要なだけです。本当にありがとう!

したがって、探している出力は次のようになります。

マクロ前のセル 1:幸せな犬は喜びのためにジャンプ マクロ後のセル: +幸せな +犬 +喜びのためにジャンプ

4

4 に答える 4

1

どうぞ。いくつかのロジックを使用して、いつ単語をスキップするかを決定してください。

Sub Add_Plus()

Dim r As Range
Dim words As Variant
Dim word As Variant
Dim w As Long
Dim exclude As Variant
'Allow user-input to capture a list/array of words to exclude:
exclude = Split(Replace(Application.InputBox("Enter a comma-separated list of words to exclude"), " ", vbNullString), ",")
    For Each r In Selection.Cells
        'Create an array of "words" from the cell:
        words = Split((r.Value), " ")
        w = LBound(words)
        ' iterate over each "word"
        For Each word In words
            'Make sure the word is not in the excluded list
            If Not IsError(Application.Match(word, exclude, False)) Then
                '    DO NOTHING
            Else
                ' Add the "+" to these words:
                     words(w) = "+" & word
            End If
            w = w + 1
        Next
        r.Value = Join(words, " ")
   Next

End Sub
于 2013-10-17T13:49:27.967 に答える
1

それが私があなたの質問を理解した方法です-除外された単語を除いて、セルを含むすべての単語には「+」が必要です。

次のコードを試してください。以下のコメントを参照してください

Sub Add_Plus()

Dim r As Range
Dim SkipWords As Variant
    'put all excluded word here, separate, within quotation marks
    SkipWords = Array("place", "all", "words", "to", "skip", "here")


Dim tmpWords As Variant
Dim i As Integer, j As Integer
Dim Final As String, boExclude As Boolean
    For Each r In Selection
        tmpWords = Split(r.Value, " ")
            For i = 0 To UBound(tmpWords)
                For j = 0 To UBound(SkipWords)
                    If UCase(SkipWords(j)) = UCase(tmpWords(i)) Then
                        'do nothing, skip
                        boExclude = True
                        Exit For
                    End If
                Next j
                If boExclude = False Then
                    Final = Final & "+" & tmpWords(i) & " "
                Else
                    'this will keep excluded words without "+"
                     'remove it if you want to remove the excluded words
                    Final = Final & tmpWords(i) & " "
                End If
                boExclude = False
            Next i
            r = Left(Final, Len(Final) - 1)
            Final = ""
    Next

End Sub

コードを実行した後、次のセル:

do re mi
fa sol la
do place all
to words skip
here do re
place all

に置き換えられます:

+do +re +mi 
+fa +sol +la 
+do place all 
to words skip 
here +do +re 
place all 
于 2013-10-17T14:00:27.257 に答える
1

これは公式を使えば簡単にできます。

「スキップ単語」が Sheet2 の列 A にあると仮定すると、次のようになります。

=IF(COUNTIF(Sheet2!A:A,A1)=0,"+","")&A1

やります。

于 2013-10-17T13:55:38.977 に答える
0

セルを選択して、これを実行します。

Sub dural()
    For Each r In Selection
    If r.Value <> "happy" And r.Value <> "sad" Then
        r.Value = "+" & r.Value
    End If
    Next
End Sub

必要に応じて除外を変更します。

于 2013-10-17T13:47:43.723 に答える