セルのすべての文字ではなく、セルの各行の最初の単語のみが必要な状況に遭遇した場合は、この記事を読む必要があります。次のチュートリアルは、ExcelのVBAコードを介して最初の単語のみを取得するのに役立ちます。

この記事では、マクロコードを介してセミコロンで区切られたセルの各行の最初の単語のみを保持する方法に焦点を当てます。

質問:私が作業しているデータでは、各セルに複数の行がある場合があり、最初の単語のみを抽出したいと思います。

元の質問を見つけることができますhttp://www.excelforum.com/excel-programming-vba-macros/1093228-keep-first-word-in-each-line-separate-by-semicolon-and-remove-everything-else .html [ここ]

以下は、入力テキストのスナップショットです(シートの前)

img1

===

以下は、列Aの入力テキスト(シートの後)のスナップショットであり、列Bに出力する必要があります。以下のスナップショットを参照してください:

===

img2

===

コードを取得するには; VBエディターを起動するには、以下の手順に従う必要があります。[開発者]タブをクリックします。[コード]グループから、[VisualBasic]を選択します

img3

  • 以下のコードを標準モジュールにコピーします

Function FirstWordOnly(rng As Range)

Dim Arr() As Variant

Dim Count As Integer

Dim i As Integer



Count = Len(rng) - Len(Replace(rng, Chr(10), ""))



If Count > 0 Then

ReDim Arr(0 To Count)

For i = 0 To Count

If i = 0 Then

Arr(i) = Left(rng, InStr(1, rng, " ") - 1)

ElseIf j = 0 Then

j = InStr(1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

Else

j = InStr(j + 1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

End If

Next



FirstWordOnly = Join(Arr, "; ")

Else

If InStr(1, rng, " ") > 0 Then

FirstWordOnly = Left(rng, InStr(1, rng, " "))

Else

FirstWordOnly = rng

End If



End If



End Function

img4

===

これで、VBAコードを使用する準備が整いました。新しく作成されたユーザー定義関数、つまり、BeforeSheetの「FirstWordOnly」を使用します。

セルB2でUDFを使用して出力を取得するには、数式は= FirstWordOnly(A2)

img5

になります。

コードの説明:

上記のコードでは、COUNT、LEN、REPLACE、IF、INSTR、MID、CHR、LEFT、JOINVBA関数を使用しています。

‘len(rng)’;これにより、「Replace(rng、Chr(10)、 “”)」を参照しているセルの長さがチェックされます。コードはChr(10)をチェックします。つまり、各行の改行をチェックしてから、二重引用符(なし)に置き換えます

‘count = Len(rng)-Len(Replace(rng、Chr(10)、 “”))’; Countは、改行を置き換えた後の各行の長さの差を格納します。Count> 0の場合、これにより、Countの長さがゼロより大きいかどうかがチェックされ、ゼロに等しいことが判明した場合、つまりセルが空白の場合、IF条件はコードを実行しません。これを確認するには、セルB5で= FirstWordOnly(A5)を使用すると、0が返されます

img6

セルが空白でない場合、ForループはIF条件で使用され、LEFT関数では、最初の単語を取得します。各セルに複数の行がある場合、JOIN関数は最後にセミコロンを追加します結論:UDFを使用すると、すべてを削除できますVBAを介した最初の単語を除くセルの各行。この関数は、古いバージョンから新しいバージョンまでのすべてのバージョンで機能します。つまり、Microsoft Excel 2003、Microsoft Excel 2007、Microsoft Excel 2010、Microsoft Excel2013です。

image 48

私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。

_私たちはあなたからの連絡をお待ちしております。私たちの仕事を改善、補完、または革新し、あなたのためにそれをより良くする方法を教えてください。 [email protected]_までご連絡ください