• ベストアンサー

Excelの複数のセルを一つに表示する方法

下記のようなexcelの表でA1~A5に値を入れ、B1にカンマで区切ってA1~A5をまとめて表記する際に数式では =A1&","&A2&","&A3&","&A4&","&A5 とすればいいのですが、A1~A5のうちA1~A3までにしか値が入っていない場合、下記のようにa,b,c,,となってしまいます。値を入力するセルの数に範囲を設けた場合、例えば下記の場合はa,b,cと表記できる方法はないでしょうか。  A  B 1 a a,b,c,, 2 b 3 c 4 5

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

  • ベストアンサー
noname#79209
noname#79209
回答No.3

こんな方法もあります。 =SUBSTITUTE(TRIM(A1&" "&A2&" "&A3&" "&A4&" "&A5)," ",",") この方法は、前がブランクでも、「,,c,d」とはなりません。 ただし、各セル内に「スペース」があるとダメです。 正規表現が使えれば、 =RegExpReplace(A1&","&A2&","&A3&","&A4&","&A5,",+(.+),+","$1",TRUE) エクセル・ワークシート関数用正規表現アドイン: http://wiki.fdiary.net/toshiaki/?%C0%B5%B5%AC%C9%BD%B8%BDExcel%A5%A2%A5%C9%A5%A4%A5%F3

その他の回答 (3)

noname#79209
noname#79209
回答No.4

#3です。 正規表現の式は無視して下さい。

micchy1974
質問者

お礼

この方法はマクロを使わなくてよいのですね。 早速試してみたところうまくいきました。 式の意味も理解できそうです。 vizzarさんありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

Function comp(a) s = "" For Each cl In a If cl = "" Then Else s = s & cl & "," End If Next If s = "" Then comp = "" Else comp = Left(s, Len(s) - 1) End If End Function これを標準モジュ-ルに入れて セルには =comp(A1:A5) のように入れる。

micchy1974
質問者

お礼

No.1さんのと比べて文字数の表記の制限がかからないのでとても助かりました。ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

=LEFT(A1&","&A2&","&A3&","&A4&","&A5,MAX(0,COUNTA(A1:A5)*2-1)) もっといい方法があるかも知れませんので、ご参考程度に。

micchy1974
質問者

お礼

式の意味はまだ理解していないのですが、この通りに実行したらうまくいきました。ありがとうございます。

関連するQ&A

専門家に質問してみよう