• ベストアンサー

常に特定の行の上に新規行挿入するマクロ

   A , B 1: 1月,1000円 2: 2月,2000円 3: 計,SUM(B1:B2) 4: 月,  円 という表があります。 4行目を常に計行(上記の場合は3行目、仮に3月分まで入力している場合は4行目になる)の上に挿入し、合計は挿入行分も含まれる、というマクロは可能でしょうか? ご存知の方おられましたらご教授願います。

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

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.4

こうかな? Sub aaa()   Dim ws As Worksheet   Dim rge As Range   Dim r As Long         Set ws = ActiveSheet      Set rge = ws.Range("A:A").Find("計") 'A列で検索   If rge Is Nothing Then Exit Sub '見つからない場合は中断   r = rge.Row '見つかったら行番号を取得   '計というセルに挿入   ws.Range("A" & r & ":B" & r).Insert xlDown   'コピーする   ws.Range("A" & (r + 2) & ":B" & (r + 2)).Copy   '値だけ貼り付け   ws.Range("A" & r & ":B" & r).PasteSpecial xlPasteValues   '合計欄の更新も忘れずに   ws.Range("B" & (r + 1)).Formula = "=sum(B1:B" & r & ")" End Sub

No1No2
質問者

お礼

自力ではc列に補助的に関数使ってようやく完成できた・・・と思ってたのですが、 phoenix343さんの構文で完璧です!感動しました! 本当にありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

質問内容に矛盾点が >4行目を常に計行の上に挿入 質問文の例にこの動作を行うと合計行が4行目になりますよね、次にマクロを実施すると4行目の合計行の上に合計行を挿入する形になってしまいます。    A , B 1: 1月,1000円 2: 2月,2000円 3: 3月,3000円 4: 計,SUM(B1:B2)SUMの引数がどう変化するかは不明ですが 5: 計,SUM(B1:B2) こんな形になりますが、これが目的ですか?

No1No2
質問者

補足

説明不足ですいません。 初期の状態では4行目ですが、マクロを行うごとに1行ずつ下がりますので1回行うと5行目、2回行うと6行目をコピーして挿入、といった形になります。ですので1回行った場合の表示が    A , B 1: 1月,1000円 2: 2月,2000円 3: 3月,3000円 4: 計,SUM(B1:B3) 5: 月,円 で、次は5行目を4行目の上に挿入して    A , B 1: 1月,1000円 2: 2月,2000円 3: 3月,3000円 4: 4月,4000円 5: 計,SUM(B1:B4) 6: 月,円 という形にしたいのです。

全文を見る
すると、全ての回答が全文表示されます。
  • soixante
  • ベストアンサー率32% (401/1246)
回答No.2

Sub aaa() Dim i As Integer, j As Integer Dim kei As Long i = Cells(Rows.Count, 1).End(xlUp).Row Rows(i - 1).Insert Rows(i + 1).Cut Rows(i - 1) For j = 1 To i - 1 kei = kei + Cells(j, 2).Value Next j Cells(i, 2).Value = kei Cells(i + 1, 1).Select End Sub ご質問の意図に合ってますでしょうか。

No1No2
質問者

お礼

6行目をcutでなくcopyにすると期待していたものに近くなりました! マクロは記録しかしたことがなくてVBA(?)はさわった事なかったんですが勉強になりました。まだ内容そのものは理解しきれてないんですが、解読してみます。 ありがとうございました。

No1No2
質問者

補足

あと、マクロ実行後、計行の合計値がsum関数でなく、数値になってしまうのですが、これはsum関数で残しておくのは無理なんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • orangezzzz
  • ベストアンサー率35% (401/1119)
回答No.1

おはようございます。 無理ですよ。マクロ(VBA)といっても万能ではありません。 ぜひ勉強して試してみてください。無理なことがわかります。 合計行の上を空けておけば、行挿入するだけで合計に含まれますから、ぜひそうしてください。

No1No2
質問者

お礼

PCの苦手な上司達にマクロボタンで簡単に、と思ったもので・・・ でもどうにかなるものですね、マクロ・・・奥が深いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

  • エクセルマクロでの行挿入

    データを入力するフォームにコマンドボタンで行挿入したいのですが、うまく出来ません。最下段に合計する欄が設けてあるので、その直前に行挿入したいのです。挿入後も常に合計欄の直前に行挿入できるようにするにはどうすればよいのでしょうか?

  • エクセル 行を挿入しても正しい合計値を出す方法。

    添付のようなエクセルの表を作成して管理台帳としています。 (実データは載せられないため、簡易版にしています。) 今、B9セルには(=SUM(B3:B8)が入っています。 8行目と9行目の間に行を挿入しても、合計値がきちんと(=SUM(B3:B9)の値を持ってくるようにしたいです。 過去の質問 http://okwave.jp/qa/q4644868.html 参考にして、『あ』ではできたのですが、『い』、『う』、『え』、『お』でも同様に合計値を出したいのです。 『あ』で行を挿入すると、『い』、『う』、『え』、『お』の各項目の行がずれて、 さらに『い』、『う』、『え』、『お』でも行の挿入を行います。 (挿入する行は、『あ』、『い』、『う』、『え』、『お』すべて合計値の前の行に挿入します。) きちんと、『あ』、『い』、『う』、『え』、『お』の各合計値を出す方法はありますでしょうか。 私が使っているのはエクセル2007ですが、エクセル2000を使っている人に渡すデータです。

  • 行挿入マクロをご教示ください

    A列の5行目から1000行ほどK列までデータが入っています。 A列からK列をB列優先でソートを行うと、B列にところどころ同じ番号が2行あったり、3行あったり、また4行とバラバラで、出てきます。 この場合、同じ番号が2行以上あるセルの上に空白の行1行を挿入し、同じ番号行分を合計して整理したいと考えています。 2行以上ある行の上に空白行を1行挿入するようなマクロをご教示ください。 どなたか、よろしくお願いします。

  • エクセルでデータの最後の行に行挿入後の合計されない

    エクセルで文字・数値データを作成しております。その最後の行に合計(SUMとSUMIFを使用)を出す表があります。 データの最後の行(合計の前)に行を挿入しデータ数値を入力すると、SUM(SUMIF)の合計が、前にあったデータまでしか、合計されません。 単純な計算では、行を挿入しても合計されるのに、ナゼ今回は出来ないのでしょうか?原因が分かる方は、いらっしゃいませんでしょうか? 宜しくお願い申し上げます。

  • excelで行挿入について

    excel97を使っているのですが、まず下の表を見てください。 行/列   A  B  C   1  メーカ      2  あ           3  い             4  合計           5  う         6  え           7  お              8  か                このような表があるのですが、行1~4で一つのグループなんです。 同じように  行4と行5の間に「メーカ」  行6と行7の間に「合計」 というふうに「メーカ」挿入、2行空けて「合計」挿入、「メーカ」挿入・・・を約千行分繰り返して 行/列  A  B  C  1  メーカ      2  あ      3  い      4  合計      5  メーカ      6  う      7  え      8  合計      9  メーカ     10  お     11  か     12  合計     このようにしたいのですが、簡単な方法は無いでしょうか?

  • マクロで行挿入がうまくいかない理由は?

    XPでOFFICE2007です。マクロ未熟者です。 マクロで、行挿入だけであればうまくいきますが、行挿入した後でその行に文字を入力するマクロでは、その行ではなく1行前のセルに文字が入力されてしまいます。 変なことになるのは、マクロを作成する過程で、行挿入が上の書式をコピーすることと関連がありそうなのですが、何に注意すればうまくいくのでしょう。 とりあえず今のところは行挿入を使わずに上の行をコピーして挿入する方法でうまくいっています。しかし行挿入後の文字入力がうまくいかないのか、その理由と対処方法がわかれば教えてください

  • 特定の文字の上に行を挿入したい。

    特定の文字の上列に空白の1行を挿入したいのですが、どうしてもわかりません。 B列に1900~2350まで10刻みで(1900・1910・1920・・・) 数字が60000行、繰り返しで入っております。 1900と2230の上列に1行、空白の行を挿入したいのですが、 マクロで1発挿入できないでしょうか? 宜しくお願いします。

  • エクセルマクロで行挿入

    エクセルマクロで行挿入 マクロ初心者です。 仕事で、受注した内容をエクセルで管理しているのですが、頻繁にキャンセルや日程変更があり、1日単位でデータを管理しているものですから、かなりデータ入力に労力が取られている状況です。 キャンセルや日程変更になったデータに関しては、行ごと削除するのではなく、行単位で取り消し線と文字を赤にして、見た目で無くなったということがわかるようにしています。 また、受注したら行を挿入して新しいデータを入力しています。 そこで、赤字で取り消し線にて入力されている行の一つ上の行に挿入、ということをマクロでできないかと思っています。 赤字に取り消し線の行に関しては、何行目になっているかはその日によって違うので、その指定と、書式を指定する方法がわからない状況です。 マクロで上記のことができるのであれば、ご教授いただけると助かります。 宜しく御願いいたします。

  • マクロで行挿入後挿入部分を含めたソートをしたいのですが・・・

    A1に会社名のカタカナ。B1に会社名があります。 10行程度すでにデータが入っている状態で 途中行に新たに1行を挿入したのち 増えた行数分(全部で11行)も含めて並べ替えをするという作業を行います。 その場合、マクロで以上の手順を踏むと 1度目はうまくいくのですが 2度目になると相対参照でマクロを設定したにも関わらず 11行目までしかソートされません。 12行目がソートの範囲に入らないのです。 行が増えた分も含めて、すべての行数をソートするには どのようなVBAを組めばいいのでしょうか? ご教授ください。

専門家に質問してみよう