Excel 2010で文字のN番目とN +1番目の出現の間から文字列を抽出する方法は?


2

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

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

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

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

次の課題に取り組むにはどうすればよいですか?


列にテキストを使用します。
カイル

回答:


1

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

「列へのテキスト」機能を使用してみましたか?Excel 2010では、これはデータリボンのボタンの1つです。

  1. 列を選択します。
  2. 「列へのテキスト」ボタンをクリックします。
  3. ウィザードの最初のページで、「区切り」を選択してから、「次へ」を選択します。
  4. 2番目のページで、「コンマ」にチェックマークを付けて、区切り文字として選択します。データの形式に応じて、他の一部をチェック/チェック解除することもできます。
  5. この時点でおそらく[完了]をクリックしてデータを列に分割できますが、次のページに移動して列の形式を変更することをお勧めします。

1

A1のサンプルデータを使用して、B1に以下を入力します。

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

そしてコピー:

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

編集#1:

私たちは列の材料で起動した場合、AB、このように:

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

そして、この短いマクロを実行します:

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

これで終わります:

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


データベースのリストに関連付けられた人物を照合するための新しい要件が渡されました。したがって、このソリューションは突然興味深いものになります。関数を解凍してください。たとえば、私のデータベースのリストは、「企業データベース1、HRデータベース3、財務データベース67」に似ています。スペースを残す必要があるので、結果をトリミングすることはできません。また、データベースリストはD列にあります。最終的に、ドラッグした列に膨大な量の余分なスペースができます。
-DeNaeL

新しい要件がわかりません。
ゲイリーの学生

レポートには、名前の列とデータベースのリストを含む列があります。1つの名前、多くのデータベース。今、彼らは私にそれを壊して欲しいので、名前と単一のデータベースを持つ行があります。名前とデータベースの関連付けごと。
DeNaeL

@DeNaeL EDIT#1を
ゲイリーの学生

これを行う非VBAの方法が必要な場合は、貼り付けと転置機能が役立つ場合があります。データベース名を単一行のセルに分割したら、それを使用して列に転置し、名前をコピー&ペーストして一緒に貼り付けることができます。ただし、処理する行がたくさんある場合、これは少し労働集約的である可能性があります
...-JRI
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.