• ベストアンサー

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% (7418/18948)
回答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

  • エクセルで複数セルの結合にて

    A1 A2 A3 aaa bbb ccc 上の様に、セルA1~3にそれぞれ入力してあります。 この3個のセルを1個に結合したいのですが結合すると A1のaaaしか生き残ってくれません。 A1 aaabbbccc 又は、aaa bbb ccc この様に結合時に文字も結合する方法はないでしょうか?

  • エクセルで複数セルの文字を一回で行ごとに結合したい

    文字を消さずにセルを結合する方法は http://okwave.jp/qa2246502.html こちらの質問の回答を見てできるようになりました。 しかし、同じ結合作業を数行にわたってしたいと思い使ってみたら大きな1つのセルになってしまいました。 (例えばA1~A5とB1~B5を選択してマクロを使ったらA1にすべての内容が入っている状態) 行ごとの結合になるように1回でできる方法はありませんでしょうか。 量が多いので1行ずつ作業するのが大変だなぁと思ったので質問してみました。 よろしくお願いします。

  • セルを結合すると左以外の文字が消えてしまう/エクセル

    こんにちは。エクセルでセルを結合する場合 例) A B C という3つのセルを結合しますとAのセルの文字だけが残って残りのB、Cの文字が消えてしまいます。 結合後の1つのセルに入る文字を ABCと合体させたいのですがなにか良い方法ありませんでしょうか? どうかよろしくお願いいたします。

  • エクセル多数文字列セル結合と改行

    Excel2007を使っています。 セルA1~A100までに文字列が入っています。 これを結合し、セルの終わりごとに改行を入れたいです。 「=CONCATENATE(A1,CHAR(10),A2,......)」とやる以外で、うまくやる方法はありますでしょうか?

  • 結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法

    結合セル内の値を、結合解除後に結合されていた全てのセルへコピーする方法 例えば、A1~A5、A6~A10がそれぞれ結合されており、【あ】【い】という文字が それぞれ入力されているとします。 各結合セルを解除後、各結合セルを構成していたセルにそれぞれの文字をコピーして、 A1~A5には【あ】 A6~A10には【い】という文字が入るようにしたいと思っているのですが、 実践している下記の方法だと、セル数が多いせいか時間がかかってしまいます。 (1)結合セルを全て解除 (2)For Next if文で1行目から順にセルを見て、何も入力されていなければ、  直上のセルに入っている文字をコピーする。 そこで、下記のような方法で高速化できないか考えたのですが、記述がわかりません。 ご教授頂けますでしょうか。 または、他に高速化できる方法がありましたらお教え頂けますと幸いです。 (1)上から順に結合セルを探す。 (2)結合セルに当たったら、結合セルを構成する先頭セルと末尾セルのアドレスを変数に記憶 (3)該当の結合セルを解除 (4)記憶したら先頭セルの内容を、先頭セル直下~末尾セルまでにコピー (5)末尾セルの直下から、(1)~(4)を繰り返す。 どうぞ、よろしくお願いいたします。

  • Excelのセル名称の結合

    エクセルでセルA1,A2に例えばABC,DEFという文字が入っているとき, A3にABCDEFと結合したものを入れる操作をするにはどのような式を書けばよいのでしょうか。

  • エクセルでA1のセルの文字にB1のセルの文字を結合できますでしょうか?

    エクセルでA1のセルの文字にB1のセルの文字を結合できますでしょうか? 別のセルに=CONCATENATE(A1,B1)ではなくあくまでA1のセルの文字に B1のセルの文字をつなげたいのです。 出来ますでしょうか? よろしくお願いします。

  • Excelで、セルの結合をしたいんですが・・・

    Excelで文字が入ったセル同士を結合させて ひとつのセルに両方の文字を表示させたいのですが どのようにしたらできるか、わかる方がいましたら 教えてください。   東京都という文字の入ったセル   杉並区という文字の入ったセルを結合させて 東京都杉並区という文字の入ったひとつのセルを 作る方法です。よろしくお願いします。 

  • エクセルのセルの結合について

    A1からA5まで結合されているせるがあり、結合解除すると「選択範囲には複数のデータ値があります。」というメッセージがでます。 そしてOKを押すとセル結合が解除され、A1からA5までの全てのセルに文字がされている状態になるのですが、これはどのように実装されているかご存知の方いらっしゃいますでしょうか? もしいらっしゃいましたらご教授願います。

  • 「エクセル」で、「セルの結合」をしても2つ目のデータが消えないようにしたいのですが

    「エクセル2000」で、別々のセルに入力しているデータ(文字や数字)を、 それぞれ生かしたままセルを統合することは出来るのでしょうか? 「セルの書式設定」で「セルの結合」をすると、左上端の文字は残りますが、 それ以外のデータは消されてしまいますよね? 例えば、A1のセルに「20」、B1のセルに「30」と入って いる場合、結合すると「20」は残って「30」のデータは消えて しまいますよね。 それを、一つのセルに「2030」と統合出来るように したいのですが… (出来れば「20/30」のように、 間に「/」等が入るようにしたいのですが…) 無理でしょうか?

専門家に質問してみよう