• ベストアンサー

行を挿入するVBAコードを教えてください

日々の予定を記録・集計しています。 A列に用事のタイトル B列に開始日 C列に開始時 D列に終了日 E列に終了時 の記載されているエクセルシートがあります。 睡眠が0時を過ぎて日を跨いでしまいますので、週別、月別に集計する際に、正確なデータがでません。 正確に集計するために、開始日B列と終了日D列が一致していない場合、 行を挿入して、もとの行は0時で終了させ、挿入行は0時開始にすることで、日別ごとに正確に集計したいです。 ※一つのタスクが2日以上にまたがることはありえないので想定しないでください VBAコードをおしえていただけないでしょうか。 よろしくお願いします

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

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんばんは 行挿入しなくても週別、月別に集計する良い方法が有りそうなきもするのですが、 一応行挿入する方法は、 Sub test()   Dim c As Long   Dim i As Long      c = Range("A" & Rows.Count).End(xlUp).Row   Application.ScreenUpdating = False   For i = c To 2 Step -1     If Range("B" & i) < Range("D" & i) Then       Range("A" & i).Resize(, 5).Copy       Range("A" & i).Insert xlShiftDown       Range("B" & i + 1) = Range("D" & i + 1)       Range("D" & i) = Range("B" & i)       Range("E" & i) = #12:00:00 AM#       Range("C" & i + 1) = #12:00:00 AM#     End If   Next   Application.CutCopyMode = False   Application.ScreenUpdating = True End Sub こんな感じで。

crossinlove
質問者

お礼

動作確認できました。 Application.CutCopyModeや Application.ScreenUpdatingなど 見慣れないワードがでてきており、 勉強を続けたいと思います。 ありがとうございます。

関連するQ&A

  • エクセルマクロ、集計行の上に空白行挿入

    エクセルデータがA、B、C、D、E列1000行まであります。 C列基準でE列を合計するマクロを作成しましたが(集計行はデータの下に挿入)、実行の結果、新たに挿入される集計行の上に空白行を1行挿入していくということを、作成したマクロに付加できるでしょうか? ご教授頂きたく、お願いします。

  • Excelの行挿入で

    Excelのシートにデータがつまっているのですが(これから新しく表を作るということではないということです。)、行の挿入をしたいのです。 このとき、行を選択して、右クリックで「挿入」を選べば挿入自体はできます。 しかし、 既にある表は、行が、A列とB列が結合されているのですが、 単に上記のように挿入すると、 A列B列が分かれている行が挿入されてしまいます。 新しく挿入された行のA列とB列を選択して、「セルの書式設定」の「配置」でセルを結合させてもいいのですが、 いちいちそうしなくても 挿入時点ですでに結合されているようにするにはどうすればよいですか。 (Excel2000)

  • エクセルマクロ、空白行(セル)の挿入

    データがA、B、C、D、E列100行まであります。 このうちD、E列を除き、エクセルのマクロで1行ごとに空白で10行挿入したいです。 (A、B、C、D列のデータに空白セルを10行分挿入し、下にシフトするイメージ。D、E列はそのまま。) ご教授頂きたく、お願いします。

  • VBA,行列入れ替え挿入

     初めまして、よろしくお願いします。  VBAで、シート  A B C D E 1    9 2    8 3    7 4 5 を  A B C D E 1 2 3 4 5  9 8 7 とC列(C1:C3)を5行目(B5:D5)へと行を挿入していくVBAを教えて頂きたく、よろしくお願いします。

  • エクセルで行挿入&コピー

    エクセルにて下記のように入力してあります。 A     B    C     D 111   111 222   111 次にC列の一行目にM001、D列の一行目にA001を入力した後(セルは2行目)に任意の行数を挿入し、さらにA,B列は一行目をコピー、C,D列は連番になるようにVBで作成するにはどうしたらいいでしょうか。 よろしくお願い致します。

  • VBA 行挿入

       A      B       C       D      E    F     G 1 連番   学校名    氏名     性別         ブレザー 2                        男子    女子  SIZE   数量 3  1    中学校1   氏名1      1          155A  1 4  2    中学校1   氏名2             1   150A  1 5  3    中学校1   氏名3      1          160A  2 6  4    中学校1   氏名4             1   150B  2 7  5    中学校1   氏名5      1          155B  1 とSheet1にありまして、HとI列を作り数量入れたいです。G列の数量が1以外のところは 行を挿入します。Hは分子Iは分母という意味です。    A      B       C       D      E    F     G      H      I 1 連番   学校名    氏名     性別          ブレザー        ブレザー 2                        男子    女子  SIZE   数量    数量   数量 3  1    中学校1   氏名1      1          155A  1      1     1 4  2    中学校1   氏名2             1   150A  1      1     1 5  3    中学校1   氏名3      1          160A  2      1     2 6  3    中学校1   氏名3      1          160A  2      2     2 7  4    中学校1   氏名4             1   150B  2      1     3 8  4    中学校1   氏名4             1   150B  2      2     3 9  4    中学校1   氏名4             1   150B  2      3     3 10 5    中学校1   氏名5      1          155B  1      1     1 1と2行目は初めから入ってるとします。VBAで入れられるのであれば入れたいですが。 連番は何番まであるかわかりません。 宜しくお願いします。

  • 行の挿入で数式も自動的に挿入

    C1列に=SUM(A1:B1)を入力し、オートフィルを30行目までかけました。 3行目で行の挿入をした時に 自動的にC列に数式が入力されている状態 (上の行、又は下の行のコピーを挿入) にしたいのですがどうすればよろしいでしょうか? 行をコピー  → コピーしたセルの挿入 以外の方法はあるんでしょうか? よろしくお願い致します。

  • エクセル関数で、ご教示下さい

    例として、セルA1~A10に、1.2.3.・・・・10と番号を入れて       セルB1~B10には、商品の在庫数が入力されているとします。 この時、セルC1に集計の開始番号 セルC2に集計の終了番号を入力すれば、      D1に開始番号から終了番号までのB列の合計を表示させたいのですが、      このような集計ができるD1に入れる関数はあるでしょうか。 例えば、B列の3行目から6行目までの合計をD1に表示させたい場合に      C1にA列番号の3を入力、C2には6を入力すれば、D1にB3からB6の合計を      表示してくれる、といった関数です。      開始番号、終了番号は、何番~何番までと、その都度変わります。 どなたか、よろしく、お願いいたします。         

  • 条件にあてはまる場合、行挿入+値を移動させるマクロ

    Excel2003、WindowsXPを使用しています。 説明が分かり難いところがあるかもしれませんが、よろしくお願いいたします。 1.C列に値が入っていた場合、下に行を挿入。 2.挿入した行のB列に、C列に入っていた値を移動。 3.D列に値が入っていた場合、さらにその下に行を挿入。 4.挿入した行のB列に、D列に入っていた値を移動。 5.E列に値が入っていた場合、さらにその下に行を挿入。 6.挿入した行のB列に、E列に入っていた値を移動。 というように、C-E列に値が入っていた場合、下に行を挿入し、 挿入行にその値を移動させるマクロを教えてください。 (実行前)    A列     B列  C列  D列  E列   F列 ああああ  AAA  BBB  CCC  DDD  12222 うううう    EEE                   544 くくく     FFF  GGG  VVV        8 すす     TTT   BBB            4300 (実行後)  A列     B列   C列 ああああ  AAA   12222 ああああ  BBB   12222 ああああ  CCC   12222 ああああ  DDD   12222 うううう    EEE    544 くくく     FFF    8 くくく     GGG   8 くくく     VVV    8 すす     TTT    4300 すす     BBB   4300 上記実行後のように、マクロで出来たら…と思っています。 どうぞよろしくお願いいたします。

  • エクセル VBA 同じ内容のセルの行を合わせたい

    売上集計表があり、A列に全商品のコードが表示されてます。 毎日の売上商品のデータを商品コード別に数量を入力して同じ内容のセルの行の位置を合わせる作業を毎日行っています。 毎日の売上データはエクセルで集計されたデータを貼り付けて行っています。これをなんとかVBAで処理したいのですが、どうしたらいいのかわかりません。 内容としてはA列に全商品の商品コードが既に入力されています。 月のはじめは、B列とC列に一日の集計データそのまま貼り付けます。 A列の商品コードと同じ商品コードの行に合うまで空白のセルを挿入していきます。 次の日は、D列とE列、その次はF列とG列と右に貼り付けしていきます。 商品コードは約3000件、毎日の集計データ数は約500件です。 どうか教えてください。 完成例)   A列   B列   C列     D列    E列       F列    G列   H列   I列 商品コード    10/1分        10/2分            10/3分       10/4分・・・続く        商品コード 数量   商品コード 数量      商品コード数量 CZ1.000  CZ1.000   10    CZ1.000   20 CZ1.005                                CZ1.010  15   ←セルの挿入で CZ1.010  CZ1.010   30                    CZ1.020 30    下げる作業を CZ1.015                                CZ1.030  10 毎日行ってます。 CZ1.020  CZ1.020   11   CZ1.020    20       CZ1.040  40 CZ1.025 CZ1.030  CZ1.030   11   CZ1.030    10 よろしくお願いします。

専門家に質問してみよう