- ベストアンサー
Excelで複数セルからの文字の結合
A1~A20までのセルにそれぞれ文字が入っています。 =A1&A2&A3&…&A20 で、A1~A20までの内容を結合できると思います。 これ以外で、もっと簡単な式で同じ結果を出す方法は無いでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >もっと簡単な式で同じ結果を出す方法は無いでしょうか? 「&」演算子を使う以外には、基本的にはないと思います。 領域を統合するという関数は、ワークシートには用意されていません。名前は、たぶん、JOINという名が付けられるはずですが、それは未だ採用されていません。 Concatenate関数は、別にExcel用にあるのではなく、他機種が、「&」演算子が使えないためにあるだけに過ぎません。 そこで、myJoin というユーザー定義関数を考えてみました。 設定の仕方 Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、このコードを貼り付けて、再び、Alt + F11 で、画面を閉じます。 ただし、登録したブックのみの有効です。 '<標準モジュール> Function myJoin(範囲 As Range, Optional 区切り文字 As String) As Variant Dim c As Range, buf As String If 範囲.Rows.Count = 1 Or 範囲.Columns.Count = 1 Then For Each c In 範囲 buf = buf & 区切り文字 & c.Value Next c If 区切り文字 <> "" Then myJoin = Mid$(buf, 2) Else myJoin = buf End If Else myJoin = CVErr(xlErrRef) 'エラー値 End If End Function 使い方: =MYJOIN(A1:A20) =MYJOIN(A1:A20,",") とすると、「,」区切りで出てきます。 必ず、縦1列か横1行の範囲を指定してください。 どちらか一方が2列か2行以上の場合は、エラーが出ます。 汎用的にどこにでも使いたい場合は、アドイン化しなければなりません。マクロが少し分る方の、Public ステートメントをつけるというのは良くある誤解です。
その他の回答 (4)
- neKo_deux
- ベストアンサー率44% (5541/12319)
取り敢えずの結果が欲しい時なんかに良くやるのは、 B1=A1 B2=B1&A2 B3=B2&A3 … B3以降はB2をコピペ。 で、B20に結合結果を出し、コピー、値として貼り付けとか。
お礼
ありがとうございます。 思えば私もそのやり方をしていた事があります! 気付かなかった私は頭が固くなってしまったのでしょうか…。
- mshr1962
- ベストアンサー率39% (7417/18945)
ユーザー定義の関数を作れば可能ですが... Alt+F11でVisualBasicEditorを起動して 「挿入」「モジュール」でモジュールを作成(既に有る場合はこの作業は不要) モジュールに下記のコードを作成 Function concat(HANI As Range) Dim Sx, Sy, Ex, Ey As Long, WKS As String Sx = HANI.Columns.Column Sy = HANI.Rows.Row Ex = HANI.Columns.Count - Sx + 1 Ey = HANI.Rows.Count - Sy + 1 For Hx = Sx To Ex For Hy = Sy To Ey WKS = WKS & Cells(Hy, Hx) Next Hy Next Hx concat = WKS End Function =concat(A1:A20) で結果を出せます。 ※複数列の場合は行方向を先に連結します。 逆がいい場合はFor..to..Next文の順番を変えてください。
お礼
ありがとうございます。 シンプルでわかりやすいマクロですね。参考になります。
- GETSTREET
- ベストアンサー率18% (14/74)
VBAですがこんな感じと思います。 結合した値はB1セルに書き出します。 Sub 結合() Dim str As String For i = 1 To 20 str = str & Cells(i, 1).Value Next Cells(1, 2).Value = str End Sub
お礼
ありがとうございます。 やっぱりVBAを使うことになるのですね。
- Stealth
- ベストアンサー率10% (1/10)
concatenate関数はいかがでしょうか。
補足
ありがとうございます。 「&」の入力から「,」の入力になって、入力しやすくはなるのですが… 例えば、A1:A20で指定すると文字列を繋げる、というようなモノを求めているのですが、無いでしょうか…
お礼
ありがとうございます。 マクロ試してみましたが、思った通りの結果が得られました。 区切り文字の指定など、気を利かせて頂きとても便利です。