- ベストアンサー
エクセル:複数セルの情報を1つにまとめる方法
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
C3セルに =A3&";"&C4 と式を記入し,リストの下端までずらずらずらっとコピーしてください。 C3を改めてコピーし,形式を選んで値に貼り替えてしまえば,下の式は用済みなので削除します。 削除する前に,一番リストの下端の式だけ「最後の;」を付けないように修正するか または C3を値化したら,一番最後の;だけ削除してください。 #C3セルの式を =A3&IF(C4="","",";")&C4 以下コピー のように手間をかけても勿論構いませんが,これじゃどっちが楽かよくワカランとは思います。
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
>500件を超えるような 関数でやろうと言うのは狂気の沙汰。 CONCATENATE関数もセル範囲を指定できないようだ。 VBAでユーザー関数定義をする方法もあるかもしれない。 VBAでも考えないと。 >500件を超えるような・・ 500件とはどういう状態なのか、わからないよ。 (1)A1:A500と言う意味か (2)A列から第50列までか (3)500シートか (4)500ブックか (5)500領域のセル範囲 どれか疑問になると思わない? ーー CSVファイルにして置換を考えるのも場合によっては有効かも。 しかし上記のどれかの場合有効に出来ないことも考えられる。 ーー どういう場合に、こんなことが必要になったか書いて質問すれば、あるいは名案が回答に出るかも。
お礼
今回は御返答いただきありがとうございました。 また、私の質問がわかりにくく、申し訳ありませんでした。 お時間を頂戴し申し訳ございませんでした。
- MackyNo1
- ベストアンサー率53% (1521/2850)
いくつかのアプローチがありますが、たとえばデータが英数字のみのデータならフィルの機能を使って1つのセルにまとめる方法があります。 例えばA3セルからCtrl+↓でデータ範囲を選択し、そのまま→で一番右端のセルまで選択し、Excel2003なら「編集」「フィル」「文字の割り付け」をすればスペースで区切られたコードが1つのセルに入力されます。 このセルでスペースをセミコロンにすればご希望のデータになっています。 もう1つの方法として、英数字の文字コードを結合するPHONETIC関数を利用することができます。 A2セルの右のB2セルに以下の式を入力し、下方向にオートフィル(セルの右下をダブルクリック)します。 =IF(B2="","",B2&";") 何度も同じ作業があり、自動的に表示させたい場合は、上記の数式を実際のデータよりも多めに(500行まで)オートフィルしておきます。 そしてデータが表示されているB3セル(B2セルは数式を残しておく)から下方向に数式セルを選択し(Ctrl+↓)、右クリック「コピー」、そのままもう一度右クリック「形式を選択して貼り付け」で「値」にチェックを入れOKします。 そして、以下の数式を入力すれば、ご希望の結合した文字列が表示されます。 =PHONETIC(B3:B500) 次回別のデータで使用するときは、B2セルの数式セルの右下をダブルクリックします(この操作を新しいマクロの記録に登録すれば、一発で結果を表示できます)。
お礼
ご入力いただき、誠にありがとうございました! 特に「PHONETIC」の使い方、大変参考になりました! 使いこなせるよう精進したいと思います!
- sometime7
- ベストアンサー率45% (18/40)
B3セルに =A3&";" B4セルに =B3&A4&";" B4セルを一番下まで引っ張ると A列500?B500に全てが足されてると思います。 あとはB500をコピーして形式貼り付け 値 で完了です 関数では文字列を範囲指定で結合する関数は 無いと思います。マクロが使えれば出来ます。 以上 ご参考までに
お礼
お返事をいただき、誠にありがとうございました! なるほど・・・、わかってみると簡単なことだったように思いますが、 脳ミソがハッとしました。 ありがとうございました!
- 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
お礼
再度入力いただき、お手数をおかけし大変恐縮しております。 誠にありがとうございました!!
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 文字数の制限があると思いますが・・・ それは無視して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
お礼
お返事いただき誠にありがとうございました! VBAが超初心者のため、まだ自信がないのですが、 活用できるようにいたします。 ありがとうございました!
- PXU10652
- ベストアンサー率38% (777/1993)
思いついた手順です。なお、1セルに入力できる文字数に制限がある(Excelのバージョンにより異なる。2003なら1024文字までしか表示できない)点に注意。 1.A列のデータの入っているセルを選択してコピー。 2.C2セルに「形式を指定して貼り付け」で「行列を入れ替える」にチェックして実行。 3.A列(C2セル以外)を削除。 4.ファイルをCSV形式で保存 5.上記ファイルをテキストエディタで開き、「,」を「;」に置換。 6.元のExcelファイルを開き、5.で作成したデータをC4セルにコピー。
お礼
お返事いただき、誠にありがとうございました!! なるほど、こういうやり方もあるのか・・・、と大変勉強になりました。 ありがとうございました!
お礼
お返事いただき、誠にありがとうございました!! 御礼が遅くなり申し訳ありませんでした。 なるほど・・・、脳ミソがハッとしました。 ありがとうございました!