質問: 【エクセル】行挿入で数式もいっしょにコピーしたい こんにちは。 エクセルで現金出納帳を作成しています。 例えば・・・ a列 b列 c列 d列 e列 1 日にち 科目 収入 支出 残高 2 10/1 光熱費 10000 3 10/2 給料 200000 190000 4 ・・・・・・ e列には=if(e2="","",if(and(c3="",d3=""),"",e2+c3-d3)) という数式を入れています。 後からデータを足したい時(例えば3行目に挿入)に、行挿入をすると 数式もコピーされ、以下の行の数式も更新されるようにしたいのですが、どのようにしたら良いのでしょうか。 ご回答宜しくお願い致します。
回答: >行挿入をすると数式もコピーされ、 これは簡単そうで簡単ではありません。マクロが必須ですし、それも本格的にやるならクラスモジュールという、あまり一般的ではない「難しめ」のテクニックが必要です。 そこで、もう少し簡単な方法を回答します(それでもマクロは必要です) それは「a列からd列に値を入力したとき、e列に数式が入力されていなかったら、e列の一つ上のセルをコピーする」というものです。 ご要望とは多少意味が違いますが、これでも十分省力化になるのではないでしょうか 以下のマクロを現金出納帳のシートを開き「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けてください。貼り付けたら現金出納帳のシートを再び開き、行挿入して値を入力してみてください private sub worksheet_change(byval target as range) dim rng, r as range set rng = intersect(columns("a:d"), target) if not rng is nothing then for each r in rng if cells(r.row, "e").hasformula then else if r.row > 1 then if cells(r.row - 1, "e").hasformula then cells(r.row - 1, "e").copy destination:=cells(r.row, "e") end if end if end if next r end if end sub なお「上のセルの式をコピー」する方式にしたのは、マクロで式を直接書き込む方式にすると、シートの式を変更したときにマクロも変更する必要があるからです。質問者さまにそれが可能かどうかわからないため「コピー」にしました。ですからe列の上のセルに式がないときは何もしません。その点はご承知おきください