1 文字列の検索:

1 文字列の検索:

ユーザーグループとそれぞれのユーザー名の大きなリストがあります。今、それらをさらにフィルタリングしたいです。各ユーザーのユーザーグループはすべて 1 つのセル (ユーザー名 - ユーザーグループ) にあるので、1 つのセルに 10 ~ 15 のユーザーグループがあることになります。必要なのは「WTS」で構成される行だけなので、次に「WTS」で構成されるユーザーグループの行を新しいセルに配置します。

これをどうやって実行すればいいのでしょうか?

サンプルデータ:

ユーザーグループ 1 WTS_A、BTS_B、WTS_C、

WTS_AとWTS_Cが欲しいです。

答え1

あなたの質問を理解した上で、2 段階の解決策を提案します。

ステップ1- Excel の「テキストを列に分割」機能を使用して、単一列のテキストを複数列に変換します。区切り文字としてスペースとカンマの両方を使用します。

ステップ2- カスタム VBA 関数を使用して、目的のセルのみをコンマで区切られた 1 つのセルに結合します。

テキストを列に分割するプロセスが完了したら、シート上で ALT + F11 を押して VBA エディターを開きます。挿入メニューからモジュールを挿入します。Module1 が作成され、そのコード エディターが開きます。作成されていない場合は、左側のペインで Module1 をダブルクリックしてコード エディターを開きます。

次のコードを同じ場所に貼り付けます。

Public Function TXTJOIN(argument1 As Range)      'Accept input range
   result = ""
   colcounter = argument1.Columns.Count
   rowcounter = argument1.Rows.Count
   If rowcounter > 1 Then
        TXTJOIN = CVErr(xlErrValue)  'If row counter > 1 return #VALUE! Error
        Exit Function
   End If

   If colcounter > 255 Then
        TXTJOIN = CVErr(xlErrValue)  'If col counter > 255 return #VALUE! Error
        Exit Function
   End If


        For Each element In argument1
            If Left(element, 3) = "WTS" And Len(element) > 3 Then
                result = result & element & ","
            End If
        Next element

        If result = "" Then
            TXTJOIN = result
        Else
            TXTJOIN = Left(result, Len(result) - 1)
        End If
End Function

これにより、開始文字列が「WTS」であるかどうかをチェックし、カンマで区切られたすべての列を結合するカスタムTXTJOIN関数が作成されます。

保存して VBA エディターを終了します。ワークシートに戻り、右端の列に移動して、該当する列範囲を指定してこの関数を入力します。該当する行の長さに沿ってコピーまたはドラッグします。それぞれのセルに目的の文字列が表示されます。他の場所に値のみをコピーし、残りの列を削除してシートをクリーンアップします。

次のような状況では、この関数から #VALUE! エラーが返されます。

  • 多次元配列を渡します(例:A1:D12)

  • 255 を超える列範囲を渡します。

  • 複数行の配列を渡します(例:A1:A12)

これがうまくいくかどうか教えてください。

制限事項 - ユーザー ID はスペースまたはカンマで区切られていることを前提としています。2 つのユーザー ID がカンマまたはスペースなしで一緒になっている場合、この関数は 2 つを個別に識別しません。

ここに画像の説明を入力してください

答え2

有効な(興味深い)データを検索し、それをフォーマットするという 2 つのタスクがあります。

1 文字列の検索:

WTS などの文字列の検索は、関数 Find または Search で実行できます。どちらも、文字列が見つかったときに数値を表示します。例: FIND("WTS";A1) または SEARCH("WTS";A1)

最初の行に対してこれを行います。数式のコピーを含むセルを選択し、その下のセルにあるすべてのデータ行を選択して貼り付けます。数式は自動的に FIND("WTS";B1)...FIND("WTS";C1)... に更新されます。

この時点で手動でフィルタリングして、エラー #VALUE! が発生する行を非表示にすることをお勧めします。

結果が得られない行を削除するだけです。

2 ユーザーグループデータを分割します。

セル内に文字列 (ダッシュ「-」など) で区切られた複数のエントリがある場合は、セルを選択し、「データ」->「テキストを列に」->「区切り」->「区切り文字を追加」を使用して、「その他」を選択し、ダッシュを入力します。

これにより、データが取得され、Usergroup1 Usergroup2 Usergroup3 のように複数のセルに配置されます...

3 ボーナスヒント:

分割した複数のセルに対して検索機能を使用する場合は、セルを 1 つのセルに連結し (基本的には分割を逆にします)、連結された値を検索します。A7 = CONCATENATE(A1;A2;A3) A8 = FIND("WTS";A7)

関連情報