1 つ以上のデータベース名のリストを含む列を持つスプレッドシートがあります。残念ながら、このレポートを変更するには時間がかかります。そのため、データを操作する必要があります。
この列には、レコードに固有のすべてのデータベースが1つのセルにカンマで区切られて含まれています。このリストを分解して、各データベースを別のセルに配置する必要があります。重要な注意:ないこのソリューションでは VBA マクロ/コードを使用できます。
最初のものは簡単です。最初のコンマを見つけて、その左側にあるものをすべて返します。私が苦労しているのは、次のものです。
セル内のコンマの数をカウントする列を作成したので、複数のデータベースがリストされているかどうかを判断できます。
次の課題にどう取り組めばいいでしょうか?
答え1
これはワークシート関数の回答ではありませんが、VBA も使用していません。
「テキストを列に分割」機能を試しましたか? Excel 2010 では、これはデータ リボンのボタンの 1 つです。
- 列を選択します。
- 「テキストを列に分割」ボタンをクリックします。
- ウィザードの最初のページで、「区切り」を選択し、「次へ」を選択します。
- 2 ページ目で、「カンマ」にチェックを入れて区切り文字として選択します。データの形式に応じて、他の項目にチェックを入れたり外したりすることもできます。
- この時点で「完了」をクリックしてデータを列に分割することもできますが、次のページに進んで列の形式を変更することもできます。
答え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
最終的には次のようになります: