• ベストアンサー

エクセル:複数セルの情報を1つにまとめる方法

どなたか、どうかお力添えください。 図のように、列Aに並んだ別々のコードを、セルC4にあるように「;」でつなげて1つのセルに集約したいと思っています。 これまで、簡単な計算式を用いて、数式バーに 「=A3&";"&A4&";"&A5&";"&A6&";"&・・・・・」と打ち込んで、手作業で1つのセルにまとめていましたが、500件を超えるような集約をしようとすると、限界を感じています。 どなたか、「;」区切りでうまく集約する方法を御存じないでしょうか。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

C3セルに =A3&";"&C4 と式を記入し,リストの下端までずらずらずらっとコピーしてください。 C3を改めてコピーし,形式を選んで値に貼り替えてしまえば,下の式は用済みなので削除します。  削除する前に,一番リストの下端の式だけ「最後の;」を付けないように修正するか または  C3を値化したら,一番最後の;だけ削除してください。 #C3セルの式を =A3&IF(C4="","",";")&C4 以下コピー のように手間をかけても勿論構いませんが,これじゃどっちが楽かよくワカランとは思います。

naonnaon
質問者

お礼

お返事いただき、誠にありがとうございました!! 御礼が遅くなり申し訳ありませんでした。 なるほど・・・、脳ミソがハッとしました。 ありがとうございました!

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

>500件を超えるような 関数でやろうと言うのは狂気の沙汰。 CONCATENATE関数もセル範囲を指定できないようだ。 VBAでユーザー関数定義をする方法もあるかもしれない。 VBAでも考えないと。 >500件を超えるような・・ 500件とはどういう状態なのか、わからないよ。 (1)A1:A500と言う意味か (2)A列から第50列までか (3)500シートか (4)500ブックか (5)500領域のセル範囲 どれか疑問になると思わない? ーー CSVファイルにして置換を考えるのも場合によっては有効かも。 しかし上記のどれかの場合有効に出来ないことも考えられる。 ーー どういう場合に、こんなことが必要になったか書いて質問すれば、あるいは名案が回答に出るかも。

naonnaon
質問者

お礼

今回は御返答いただきありがとうございました。 また、私の質問がわかりにくく、申し訳ありませんでした。 お時間を頂戴し申し訳ございませんでした。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

いくつかのアプローチがありますが、たとえばデータが英数字のみのデータならフィルの機能を使って1つのセルにまとめる方法があります。 例えばA3セルからCtrl+↓でデータ範囲を選択し、そのまま→で一番右端のセルまで選択し、Excel2003なら「編集」「フィル」「文字の割り付け」をすればスペースで区切られたコードが1つのセルに入力されます。 このセルでスペースをセミコロンにすればご希望のデータになっています。 もう1つの方法として、英数字の文字コードを結合するPHONETIC関数を利用することができます。 A2セルの右のB2セルに以下の式を入力し、下方向にオートフィル(セルの右下をダブルクリック)します。 =IF(B2="","",B2&";") 何度も同じ作業があり、自動的に表示させたい場合は、上記の数式を実際のデータよりも多めに(500行まで)オートフィルしておきます。 そしてデータが表示されているB3セル(B2セルは数式を残しておく)から下方向に数式セルを選択し(Ctrl+↓)、右クリック「コピー」、そのままもう一度右クリック「形式を選択して貼り付け」で「値」にチェックを入れOKします。 そして、以下の数式を入力すれば、ご希望の結合した文字列が表示されます。 =PHONETIC(B3:B500) 次回別のデータで使用するときは、B2セルの数式セルの右下をダブルクリックします(この操作を新しいマクロの記録に登録すれば、一発で結果を表示できます)。

naonnaon
質問者

お礼

ご入力いただき、誠にありがとうございました! 特に「PHONETIC」の使い方、大変参考になりました! 使いこなせるよう精進したいと思います!

  • sometime7
  • ベストアンサー率45% (18/40)
回答No.5

B3セルに =A3&";" B4セルに =B3&A4&";" B4セルを一番下まで引っ張ると A列500?B500に全てが足されてると思います。 あとはB500をコピーして形式貼り付け  値 で完了です 関数では文字列を範囲指定で結合する関数は 無いと思います。マクロが使えれば出来ます。 以上 ご参考までに

naonnaon
質問者

お礼

お返事をいただき、誠にありがとうございました! なるほど・・・、わかってみると簡単なことだったように思いますが、 脳ミソがハッとしました。 ありがとうございました!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! No.3で投稿したのですが・・・ 人間を選ばれたのか?ちゃんと受け付けてくれなかったようなのでもう一度投稿します。 文字数の制限があると思いますが、それは無視しています。 VBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です。) Sub test() 'この行から Dim i As Long Dim str As String For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row str = str & Cells(i, 1) & ";" Next i Cells(4, 3) = Mid(str, 1, Len(str) - 1) End Sub 'この行まで 参考になれば良いのですが・・・m(__)m

naonnaon
質問者

お礼

再度入力いただき、お手数をおかけし大変恐縮しております。 誠にありがとうございました!!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 文字数の制限があると思いますが・・・ それは無視してVBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので、 ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long Dim str As String For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row str = str & Cells(i, 1) & ";" Next i Cells(4, 3) = Mid(str, 1, Len(str) - 1) End Sub 'この行まで 参考になれば良いのですが・・・m(__)m

naonnaon
質問者

お礼

お返事いただき誠にありがとうございました! VBAが超初心者のため、まだ自信がないのですが、 活用できるようにいたします。 ありがとうございました!

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.2

 思いついた手順です。なお、1セルに入力できる文字数に制限がある(Excelのバージョンにより異なる。2003なら1024文字までしか表示できない)点に注意。 1.A列のデータの入っているセルを選択してコピー。 2.C2セルに「形式を指定して貼り付け」で「行列を入れ替える」にチェックして実行。 3.A列(C2セル以外)を削除。 4.ファイルをCSV形式で保存 5.上記ファイルをテキストエディタで開き、「,」を「;」に置換。 6.元のExcelファイルを開き、5.で作成したデータをC4セルにコピー。

naonnaon
質問者

お礼

お返事いただき、誠にありがとうございました!! なるほど、こういうやり方もあるのか・・・、と大変勉強になりました。 ありがとうございました!

関連するQ&A