Excel 2010 で文字の N 番目と N+1 番目の出現の間から文字列を抽出するにはどうすればよいでしょうか?

Excel 2010 で文字の N 番目と N+1 番目の出現の間から文字列を抽出するにはどうすればよいでしょうか?

1 つ以上のデータベース名のリストを含む列を持つスプレッドシートがあります。残念ながら、このレポートを変更するには時間がかかります。そのため、データを操作する必要があります。

この列には、レコードに固有のすべてのデータベースが1つのセルにカンマで区切られて含まれています。このリストを分解して、各データベースを別のセルに配置する必要があります。重要な注意:ないこのソリューションでは VBA マクロ/コードを使用できます。

最初のものは簡単です。最初のコンマを見つけて、その左側にあるものをすべて返します。私が苦労しているのは、次のものです。

セル内のコンマの数をカウントする列を作成したので、複数のデータベースがリストされているかどうかを判断できます。

次の課題にどう取り組めばいいでしょうか?

答え1

これはワークシート関数の回答ではありませんが、VBA も使用していません。

「テキストを列に分割」機能を試しましたか? Excel 2010 では、これはデータ リボンのボタンの 1 つです。

  1. 列を選択します。
  2. 「テキストを列に分割」ボタンをクリックします。
  3. ウィザードの最初のページで、「区切り」を選択し、「次へ」を選択します。
  4. 2 ページ目で、「カンマ」にチェックを入れて区切り文字として選択します。データの形式に応じて、他の項目にチェックを入れたり外したりすることもできます。
  5. この時点で「完了」をクリックしてデータを列に分割することもできますが、次のページに進んで列の形式を変更することもできます。

答え2

サンプルデータありA1、 でB1入力:

=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

そしてコピーします:

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

編集#1:

列の素材から始めるとそしてBこのような:

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

次の短いマクロを実行します。

Sub dural()
   Dim N As Long, i As Long, K As Long
   N = Cells(Rows.Count, "A").End(xlUp).Row
   K = 1

   For i = 2 To N
      v = Cells(i, "A").Value
      ary = Split(Cells(i, "B").Value, ",")
      For Each a In ary
         Cells(K, "C").Value = v
         Cells(K, "D").Value = a
         K = K + 1
      Next a
   Next i
End Sub

最終的には次のようになります:

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

関連情報