• ベストアンサー

エクセル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の======が入るように「データ」シートのデータがなくなるまで右にずらっとつなげていくようにしたいと思っています。今手作業でやっているのですが時間がかかって・・・。 よろしくお願いします。

  • wait4u
  • お礼率45% (619/1365)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答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/17068)
回答No.3

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

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答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

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

  • エクセル:複数セルからの参照

    お世話になります。 A,B,C列にデータが入っています。 D,E,F列に参照のためのデータがあります。 A,B,C列はそれぞれD,E,F列に対応しています。 A,B,C列と同じ並びのデータが入っている行をD,E,F列から探し、その隣のG列の値をH列に返す。 D,E,F列の並びが重複する行はありません。 A,D列は場所の名前、B,C,E,F列には数字が入っている。 例) A1に事務室 B1に20 C1に3 が入っているとする。 D/E/F列が 事務室/20/3 の並びになっているのが10行目の場合、H1にG10のセルの値を返す。 この場合、H列にはどんな計算式を入れておけばよいのでしょうか? A,B,C列と同じ並びのデータがD,E,F列で見つからない場合は空白をH列に返す。 ちなみにD/E/F列が 事務室/20/3 の並びになっている行は10行目しかないです。 よろしくお願いします。

  • エクセルのセル内で改行

    A1のデータとA2のデータ(ともに文字列)を改行して一つのセル(A3)に入れたいのですが、A3に =A1&A2 では当然改行しません。 この書式で =A1&**&A2 のように**に改行コードを入れて、alt+Enterのように改行させたいのです。**に何を入れればよいでしょうか? また、別の式の書き方がありますか?

  • エクセルVBAを使って複数セルをひとつのセルにまとめたいのですが。

    以前投稿されていたもので、やってみたのですが、うまくいかなかったので質問いたします。 E3~E42までのセルの情報をB3へまとめたいのです。 また、E3~E42のうちなにも書かれていないセルは、まとめないようにしたいです。空白になっているセルは、最後に記載されているセル以降空白になる状況となります。 今後の運用面を考え、この手法をとりたいのですが、よい方法はありますでしょうか。   A列 B列 ・・・ E列 3    111      111      222      333      444 4           222 5           333 6           444 7 8 9 質問の説明が足りないようでしたら、ご指摘ください。 よろしくお願いします。

  • EXCELで改行しながら文字表示

    セルB1に  「12345678(改行)ABCDEFGH(改行)abcdefgh(改行)09876543」 と表示させたいです。(文字列は例) 半角8文字単位で改行 表示させる元データは、  セルB5=C5&D5&E5&F5     C5=12345678(文字列)     D5=ABCDEFGH(文字列)     E5=ABCDEFGH(文字列)     F5=09876543(文字列)   各々文字列が入力されないこともあります。  (文字が無ければ前詰めですが、できるだけ8文字単位にしたいので   半角スペースを入れたりします。) C5からF5を入力することにより、カーソルをB5にもっていくと 結果としてB1に表示させるというものです。 文字列は*5行のセルだけでなく、8000行くらいあります。 欲をいえば、カーソルがある行のセルB*を表示させることが できればベストです。 (例えば、F4000にカーソルがあれば、B4000の文字を表示する) 宜しくお願いします。

  • Excelのセル内で改行してある文字を別セルへ

    A列のセル内に例えば次のように住所情報があります。 XX市XX町1-2-3 XXビル1F 「XXビル1F」は改行して入力されています。 「XXビル1F」のような改行してある2行目の文字列をA列から消してB列に移動させる方法(関数等)を教えてください。 よろしくお願いいたします。

  • エクセルで複数セルをひとつのセルに改行して表示させたい。

    エクセル2000です。 こんな関数ありますでしょうか? 仮に A1に「ああああ」B1に「いいいい」C1に「うううう」と文字列(文字数は不定)が入っていた場合 A2セルに ああああ いいいい うううう と、改行して表示させる方法を知りたいのです。(&でつなげただけでは改行できないものですから)

  • エクセルVBAで不一致に空白セルを挿入

    エクセル2010です。 A、B列ともソートされています。 ごく少数ですが同一列内に重複するデータもあります。 そして A列に、1行目からA、B、C、E、F、F、H B列に、1行目からA、B、D、E、F、G、I (カンマは実際にはありません。) というような文字列データがある場合 別シートに A列に、1行目からA、B、C、空、E、F、F、空、H、空、 B列に、1行目からA、B、空、D、E、F、空、G、空、I、 (空は空白セルの意味です。) というように、お互いが一致しない場合は空白で飛ばし、一致するものは同じ行にするにはどのような方法がよろしいでしょうか? 例のように少ないデータなら目で見て手作業でできますが、実際は千件以上のデータです。 VBAでも関数でも結構です。よろしくお願いします。

  • EXCEL セル内のデータを置き換えたい

    うまく説明できないのですが、 Sheet1のA列とB列に、1つのセルに複数のデータが以下のように入っています。(データの間に「,」があります。)     A列             B列 1行 6599A,6599B,6599C  6599A 2行 6599B,6599C      3行              6599A,6599C これは商品コードでして、Sheet2に明細があります。 A列    B列 りんご  6599A メロン   6599B みかん  6599B Sheet1のデータを、「りんご」「メロン」「みかん」に置き換えたいのです。 データの数が、たくさんあるので、コピー、ペーストでは対応できません。 よい方法をお教えください。よろしくお願いいたします。

  • インポートしたシートのセル内の改行

    初めての質問です。 EXCELのワークシートをACCESSにインポートしました。 列見出し(フィールド)は 日付 内容A 内容B で、内容A,B共にセル内で改行(alt+enter)しています。 これらをACCESSにインポートすると データ内での改行が保持されていません。 レポートで印刷する際に見易さがほしいので データ内で改行させたいのです。 VBAは、少しわかります。 どなたかよろしくお願いします。

専門家に質問してみよう