• ベストアンサー

エクセルVBAで、複数セルのデータをひとつのセルに改行してまとめたいのですか・・・

データの内容をひとつのセルに改行して入れていくという 作業を自動化できないでしょうか? 「データ」シート メモ 地点 from ~ to 線種 A1,B1,C1,D1,E1,F1に上の項目があり、 メモ、地点には文字、from ~ toには時刻(00:00)が入り、線種には =====というような記号が入ります。("~"の列には00:00形式の時刻が入る他"~"という記号が入るときもあります) それぞれの項目の下にデータを入力してあります。 これを「まとめ」シートに ・A~E列までをひとつのセルに改行してまとめる ・F列はその右隣にそのまま表記する と自動でできないかと考えています。例えば、「データ」2行目に A2 観劇 B2 日本大劇場 C2 10:00 D2 ~ E2 12:00 F2 ====== とある場合、「まとめ」シート A2セルは 観劇 日本大劇場 10:00~12:00 と改行して入り、B2に「データ」F2の======が入るように「データ」シートのデータがなくなるまで右にずらっとつなげていくようにしたいと思っています。今手作業でやっているのですが時間がかかって・・・。 よろしくお願いします。

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

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

#1です。VBAの例 Sub MACRO1() Dim RG As Range Dim R1, R2 As Integer Set RG = ActiveWindow.RangeSelection R1 = RG.Row R2 = R1 + RG.Rows.Count - 1 For I = R1 To R2 If Cells(I, 1) = "" Then Exit For Cells(I, 1) = Cells(I, 1) & Chr(10) & Cells(I, 2) & Chr(10) & Format(Cells(I, 3), "hh:mm") & "~" & Format(Cells(I, 5), "hh:mm") Range(Cells(I, 2), Cells(I, 5)) = Null Next I End Sub

wait4u
質問者

お礼

mshr1962さんありがとうございました。実行したところ改行してひとつのセルにまとまりました。こうやってコードをかけるとうらやましいです。悲しいことにご提示いただいた例を元に改変して利用することが今の自分の力量ではできません。もう少し待ってみると同時に自分でも改変を試みてみます。

その他の回答 (2)

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

もう回答は出てますが、この課題の要素スキルは (1)セル内改行は文字列の間にChr(10)を入れる(&で結合) (2)結合は「セル値(番地)&セル値(番地)&・・」 その間に(1)のセル内改行コードが入る。 付け加えて、 (3)日付セルが日付シリアル値ならFormat函数で日付の文字列化 (4)時刻の「To]に当たるデータがない場合「~」を削除 などです。 ーー このようにコードは判らなくても、文章に分解できるようになってください(ブレークダウン)。そうすれば質問も明確で短くなります。 例も適切なものが作れます。

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

VBA使わなくても関数では駄目でしょうか? G2=A2&CHAR(10)&B2&CHAR(10)&TEXT(C2,"hh:mm")&D2&TEXT(E2,"hh:mm") でG2に纏められます。 この結果をコピーしてA2に形式を選択して貼り付けで値にすればいいと思いますけど。 ※セルの書式設定の配置で「折り返して全体を表示」似チェックしてください。

wait4u
質問者

お礼

ありがとうございました。実は関数による方法もやってみましたが 今後の実用面から考えるとVBAであれば尚いいと思っています。 自分でできないくせに何なんですが・・・

関連するQ&A