0

いくつかの単語を新しい語句に置き換える必要があるが、元のテキストの一部を維持する必要がある列にいくつかのテキストを含む Excel ファイルがありました。ユーザーにとってシンプルに保つために、元の単語でフィルタリングできるようにしたかったので、単語ごとに列が必要でした。エクセルの「テキストから列へ」機能が役に立ったかもしれませんが、列数を指定する必要があると聞いたので、気にしませんでした。

簡単に言えば、ここに私が思いついたものがあります:


ソース セル = A2

最初の単語の列: B2

2 番目の単語を含む列: C2


A2: これはテキストの例です

B2: =IFERROR(LEFT(A2, FIND(" ", A2)), "")

C2: =IFERROR(LEFT(SUBSTITUTE(MID($A2, FIND(B2, $A2), LEN($A2) - FIND(B2, $A2)), B2, ""), FIND(" ", SUBSTITUTE( MID($A2, FIND(B2, $A2), LEN($A2) - FIND(B2, $A2)), B2, ""))), "")

D2: C2 から右に入力

...


この C2 の混乱が行っていることは、基本的に、前のセルの単語に基づいてソース セル (A2) を切り刻むことです。そのため、B2 は最初に見つけたスペースを探し、残りの文字列を捨てて、"This" という単語だけを残します。C2 は B2 を見て、A2 の値から見つけた単語を削除し、次のスペースを探します。D2 は C2 を調べます。残念ながら、単語が繰り返されると、これは機能しなくなります。

A2 のサンプル テキストを「This is some example text, is it a question」(「is」が繰り返される) に変更すると、「is」、「some」、「example」、「text、 " 右に入力すると何度も。

現在の仕事に答えは本当に必要ありませんが、どこにも良い解決策が見つからなかったため、この状況の完全な解決策を望んでいました。

これが誰かに役立つことを願っています!

4

1 に答える 1

0

見栄えの悪いVBAを使用する可能性は次のとおりです。

Sub splitCell(source As Range, delimiter As String, target As Range)
    'Takes value of source range and splits it by the delimiter horizontally
    'starting at the target range.
    Dim text() As String
    text = Split(source.Value, delimiter)
    For x = LBound(text) To UBound(text)
        target.Offset(0, x).Value = text(x)
    Next
End Sub

'Sample Call
Sub Test()
    With ThisWorkbook.Sheets(1)
        splitCell .Range("A2"), " ", .Range("B2")
    End With
End Sub
于 2012-10-02T15:07:55.883 に答える