0

私はExcelでのマクロプログラミングにまったく慣れておらず、質問を解決するための参照が見つかりません。

Excelにいくつかの単語の列があります。単語が動詞の場合、単語の直後にアスタリスクが付きます(スペースなし)。

たとえば、列の一部は次のようになります。

accuse*
accustomed be*
acid
acidic
acquire*
acre

だから私はする必要があります:

  1. セルがアスタリスクで終わるすべてのインスタンスを検索し、そのアスタリスクを削除して、セルエントリの前に「to」という単語を置きます。
  2. 単語に「be*」が含まれている場合は、アスタリスクである「be」を削除し、先頭に「tobe」を付ける必要があります。

完成した列は次のようになります。

to accuse
to be accustomed
acid
acidic
to acquire
acre

これは可能ですか?

4

1 に答える 1

2

これを試してください(リストを選択してからこれを実行してください)

Sub Demo()
    Dim cl As Range

    For Each cl In Selection.Cells
        If Trim(cl) Like "*[*]" Then
            Cl = trim(cl)
            cl = "to " & Left(cl, Len(cl) - 1)
        End If
    Next
End Sub

実際のデータには、Linefeed文字のトレーニング、*の前のスペース、*の後の用語が含まれます。

このバージョンはこれらの問題を扱います

Sub Demo()
    Dim cl As Range
    Dim r As Range
    Dim str As String, i As Long
    Set r = Selection
    For Each cl In r.Cells
        str = Trim(cl)
        str = Replace(str, " *", "*")
        If Asc(Right$(str, 1)) <= 31 Then
            str = Trim(Left$(str, Len(str) - 1))
        End If
        If str Like "* be[*]*" Then
            i = InStr(str, "*")
            cl = "to be " & Left$(str, i - 4 & Mid$(str, i + 1))
        ElseIf str Like "*[*]*" Then
            i = InStr(str, "*")
            cl = "to " & Left$(str, i - 1) & Mid$(str, i + 1)
        End If
    Next
End Sub
于 2012-08-04T08:50:23.153 に答える