Ferozの列Aには一連のテキスト値があります。これらの値は、各セルで2つの異なるフォントの色でフォーマットされています。 (テキストの最初の部分は1つの色で、2番目の部分は別の色です。)彼はこれらのテキスト値を列BとCに分割して、最初の色のすべてが列Bにあり、2番目の色のすべてが列Bにあるようにします。列Cで。彼は、Text to Columnsツールがこれを処理しないことに注意しているので、それができるかどうか疑問に思います。

はい、できます。 1つの方法は、Excelの組み込みのフラッシュ塗りつぶし機能を使用することです。 (このツールは、Excel 2013以降のバージョンでのみ使用できます。)次のようなデータから始めているとします。

(図1を参照)

image

図1.マルチカラーデータ。

私のテストデータには、列Eに、列Aのデータのいくつかの特性が含まれていることに注意してください。この時点で行う必要があるのは、FlashFillに処理できるものを与えることだけです。これを行うには、次に示すように、行2と3のテキストを手動で分割します(図2を参照)。

image

図2.例の設定。

B2:C3で作成する例は正確であることが重要です。例には、任意の色(先頭または末尾のスペースを含む)のすべてのものが含まれ、スペルと大文字の両方が正しい必要があります。

次にセルB4を選択し、Ctrl + Eを押します。これにより、フラッシュフィルが作動し、列Bの残りの部分にテキストが表示されます。列Cでも同じことを行い、セルC4を選択してCtrl + Eを押します。結果は次のようになります:(図3を参照)

image

図3.両方の列でフラッシュフィルを使用した後。

フラッシュフィルでの成功は、主に列Aのデータの特性に依存することに注意してください。ほとんどの場合、フラッシュフィルは作業の大部分を実行し、タスクを大幅に完了する可能性があります。 FlashFillがデータをどのように分解するかを識別できない奇妙な例が​​いくつかあるかもしれません。これは、セルA7、A9、およびA11が正しく引き離されていない前の図で確認できます。結果を注意深くチェックして、意味があることを確認する必要があります。

フラッシュフィルが機能しない場合は、マクロを作成して機能させる必要があります。列Aのすべてのセルで機能し、テキストを列BとCにプルするマクロを作成することは可能です(Ferozのニーズのように)が、何でも返すユーザー定義関数を作成する方が柔軟性があります。セルから欲しいです。次に例を示します:

Function SplitColors(r As Range, Optional iWanted As Integer = 1) _   As String     Dim sTemp As String     Dim J As Integer     Dim K As Integer     Dim iColors(9) As Integer

sTemp = ""

If r.Cells.Count = 1 Then         For J = 1 To 9             iColors(J) = 0         Next J

' Determine where colors change         ' Remember there will always be at least one color         K = 1         iColors(K) = 1         For J = 2 To Len(r.Text)

If r.Characters(J,1).Font.Color <> _               r.Characters(J-1,1).Font.Color Then                 K = K + 1                 iColors(K) = J             End If         Next J

' Check if wanted color is less than total colors         If iWanted <= K Then             J = iColors(iWanted + 1)

If J = 0 Then J = Len(r.Text) + 1             J = J - iColors(iWanted)

sTemp = Mid(r.Text, iColors(iWanted), J)

End If     End If     SplitColors = sTemp End Function

SplitColors関数には、1つのパラメーター(作用する範囲)が必要です

2番目のオプションのパラメーター(必要な範囲の色)。

この関数は、最初に、単一のセルが渡されたかどうかを確認します。もしそうなら、それはそのセルにある色の数と色の変化が起こる文字番号を決定します。次に、目的の色(オプションの2番目のパラメーターで渡される)がセル内の色の数よりも少ない場合、その色を使用する文字が返されます。

したがって、たとえば、セルA2の最初の色を使用してセルを返す場合は、ワークシートで次のいずれかを使用できます。

=SplitColors(A2, 1)

=SplitColors(A2)

2番目のパラメーターはオプションであるため、2番目の呼び出しは機能します。これを含めない場合、関数は最初の色で作業することを想定しています。セルの2番目の色を使用してテキストを返したい場合は、次のように機能します。

=SplitColors(A2, 2)

SplitColors関数は、チェックアウトしているセルで最大9色で機能します。 9以上の2番目のパラメーターを指定すると、エラーが発生します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13605)は、Microsoft Excel 2013、2016、2019、およびOffice365のExcelに適用されます。