プロが教えるわが家の防犯対策術!

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

どなたか、「;」区切りでうまく集約する方法を御存じないでしょうか。
どうぞよろしくお願いいたします。

「エクセル:複数セルの情報を1つにまとめる」の質問画像

A 回答 (7件)

>500件を超えるような


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

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

お礼日時:2011/03/05 20:28

いくつかのアプローチがありますが、たとえばデータが英数字のみのデータならフィルの機能を使って1つのセルにまとめる方法があります。



例えばA3セルからCtrl+↓でデータ範囲を選択し、そのまま→で一番右端のセルまで選択し、Excel2003なら「編集」「フィル」「文字の割り付け」をすればスペースで区切られたコードが1つのセルに入力されます。
このセルでスペースをセミコロンにすればご希望のデータになっています。

もう1つの方法として、英数字の文字コードを結合するPHONETIC関数を利用することができます。

A2セルの右のB2セルに以下の式を入力し、下方向にオートフィル(セルの右下をダブルクリック)します。

=IF(B2="","",B2&";")

何度も同じ作業があり、自動的に表示させたい場合は、上記の数式を実際のデータよりも多めに(500行まで)オートフィルしておきます。

そしてデータが表示されているB3セル(B2セルは数式を残しておく)から下方向に数式セルを選択し(Ctrl+↓)、右クリック「コピー」、そのままもう一度右クリック「形式を選択して貼り付け」で「値」にチェックを入れOKします。


そして、以下の数式を入力すれば、ご希望の結合した文字列が表示されます。

=PHONETIC(B3:B500)

次回別のデータで使用するときは、B2セルの数式セルの右下をダブルクリックします(この操作を新しいマクロの記録に登録すれば、一発で結果を表示できます)。
    • good
    • 1
この回答へのお礼

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

お礼日時:2011/03/05 20:31

B3セルに =A3&";"


B4セルに =B3&A4&";"

B4セルを一番下まで引っ張ると
A列500?B500に全てが足されてると思います。

あとはB500をコピーして形式貼り付け
 値 で完了です

関数では文字列を範囲指定で結合する関数は
無いと思います。マクロが使えれば出来ます。

以上 ご参考までに
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/05 20:36

こんばんは!


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/05 20:38

こんばんは!


文字数の制限があると思いますが・・・
それは無視して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
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/05 20:40

 思いついた手順です。

なお、1セルに入力できる文字数に制限がある(Excelのバージョンにより異なる。2003なら1024文字までしか表示できない)点に注意。

1.A列のデータの入っているセルを選択してコピー。
2.C2セルに「形式を指定して貼り付け」で「行列を入れ替える」にチェックして実行。
3.A列(C2セル以外)を削除。
4.ファイルをCSV形式で保存
5.上記ファイルをテキストエディタで開き、「,」を「;」に置換。
6.元のExcelファイルを開き、5.で作成したデータをC4セルにコピー。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/03/05 20:41

C3セルに


=A3&";"&C4
と式を記入し,リストの下端までずらずらずらっとコピーしてください。
C3を改めてコピーし,形式を選んで値に貼り替えてしまえば,下の式は用済みなので削除します。
 削除する前に,一番リストの下端の式だけ「最後の;」を付けないように修正するか
または
 C3を値化したら,一番最後の;だけ削除してください。



#C3セルの式を
=A3&IF(C4="","",";")&C4
以下コピー
のように手間をかけても勿論構いませんが,これじゃどっちが楽かよくワカランとは思います。
    • good
    • 1
この回答へのお礼

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

お礼日時:2011/03/05 20:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!