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

エクセルで次のようなデータがあります

"a","b","c","d"
"1","","3","4"
"1","2","","4"
"","2","3","4"

このデータに対して
2行目から4行目のe列に
その行に入っている数字をカンマ区切りで表示させたい
下記のイメージです

"a","b","c","d","e"
"1","","3","4","1,3,4"
"1","2","","4","1,2,4"
"","2","3","","2,3"

ダブルコーテーションマーク"はついていませんが
質問時、表が崩れるのでこれをつけさせてもらいました
上記のイメージですがデータ的には
900行、50列ほどあります

関数かVBAでやれる方法を教えていただきたいのですが・・・
関数・VBAについては昔やったことがある程度です
時間をかけて何かをみながら・・・やれる程度のものです
ヒント等いただければ幸いです

A 回答 (3件)

>上記のイメージですがデータ的には900行、50列ほどあります



現実には50列ものデータをちんたら関数で書いていくのはタマリマセンので,次のようにしてみます。


方法1:関数
シート1にそういったデータがあるとして
シート2のA1に
=SUBSTITUTE(TRIM(Sheet1!A1&" "&B1)," ",",")
と記入,シート1のデータ範囲をおおまかカバーするセル範囲にえいやっとコピー貼り付けてやると,シート2のA列にコタエが並びます。

必要に応じてA列を丸ごとコピーし,コタエを置きたい場所(シート3のA列でもいいし,シート1のはじっこ列でも)に形式を選んで貼り付けの値のみ貼り付けます。



方法2:マクロ
シンプルに900行×50列の固定で。

sub macro1()
 dim r as long
 dim c as long
 dim buf as string

 for r = 1 to 900
  buf = ""
  for c = 1 to 50
   if cells(r, c) <> "" then
    buf = buf & "," & cells(r, c)
   end if
  next c
  cells(r, 51) = mid(buf, 2, len(buf))
 next r
end sub
    • good
    • 0
この回答へのお礼

返答が遅くなり申し訳ありませんでした
ありがとうございました。
助かります
この考え頂戴させていただきます

お礼日時:2011/10/29 16:41

一例です。


関数で考えてみました。
E2に=SUBSTITUTE(TRIM(A1&" "&B1&" "&C1&" "&D1&" ")," ",",")を入力、下方向にコピー

因みにE列は数式のつき、データ(値)にする場合、E列を選択コピー→形式を選択して貼り付け→値を選択→OKとして下さい。(E列を残したい場合、別列を選択して形式を選択貼り付けして下さい)
    • good
    • 0
この回答へのお礼

返答が遅くなり申し訳ありませんでした
こちらの考えも参考になります
参考にさせていただきます
ありがとうございました。

お礼日時:2011/10/29 16:40

 E1セルに次の数式を入力してから、E1セルをコピーして、E2以下に貼付けると良いと思います。



=IF($A1="","",$A1&",")&IF($B1="","",$B1&",")&IF($C1="","",$C1&",")&IF($D1="","",$D1&",")
    • good
    • 0
この回答へのお礼

返事が遅くなり申し訳ありません
確かにこれも参考にさせていただきます
ありがとうございました。

お礼日時:2011/10/29 16:39

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