• ベストアンサー

Excelで複数セルからの文字の結合

A1~A20までのセルにそれぞれ文字が入っています。 =A1&A2&A3&…&A20 で、A1~A20までの内容を結合できると思います。 これ以外で、もっと簡単な式で同じ結果を出す方法は無いでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >もっと簡単な式で同じ結果を出す方法は無いでしょうか? 「&」演算子を使う以外には、基本的にはないと思います。 領域を統合するという関数は、ワークシートには用意されていません。名前は、たぶん、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 ステートメントをつけるというのは良くある誤解です。

hirumin
質問者

お礼

ありがとうございます。 マクロ試してみましたが、思った通りの結果が得られました。 区切り文字の指定など、気を利かせて頂きとても便利です。

その他の回答 (4)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.5

取り敢えずの結果が欲しい時なんかに良くやるのは、 B1=A1 B2=B1&A2 B3=B2&A3 … B3以降はB2をコピペ。 で、B20に結合結果を出し、コピー、値として貼り付けとか。

hirumin
質問者

お礼

ありがとうございます。 思えば私もそのやり方をしていた事があります! 気付かなかった私は頭が固くなってしまったのでしょうか…。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

ユーザー定義の関数を作れば可能ですが... 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文の順番を変えてください。

hirumin
質問者

お礼

ありがとうございます。 シンプルでわかりやすいマクロですね。参考になります。

  • GETSTREET
  • ベストアンサー率18% (14/74)
回答No.2

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

hirumin
質問者

お礼

ありがとうございます。 やっぱりVBAを使うことになるのですね。

  • Stealth
  • ベストアンサー率10% (1/10)
回答No.1

concatenate関数はいかがでしょうか。

参考URL:
http://www.morgan.co.jp/kiso/4excel-6.htm
hirumin
質問者

補足

ありがとうございます。 「&」の入力から「,」の入力になって、入力しやすくはなるのですが… 例えば、A1:A20で指定すると文字列を繋げる、というようなモノを求めているのですが、無いでしょうか…

関連するQ&A