質問: エクセルの上手な項目追加方法 すみませんがご教授お願いします。 エクセル(excel2016)で一覧表で計算式などを使用(sumなどで1セルずつ設定した計算を用いてます)を作成し、 あとから項目を1行追加(行にコピーしたセルの挿入)などをすると計算式の指定したセルが1行ずれてしまいます。 一覧表が膨大な大きさで手入力で修正するのには膨大な時間がかかってしまい手を焼いています。 修正いらずで上手に項目を追加する方法などないでしょうか。 すみませんがよろしくお願い致します。
回答: > 1エクセル(excel2016)で一覧表で計算式などを使用(sumなどで1セルずつ設定した計算を用いてます)を作成し、2あとから項目を1行追加(行にコピーしたセルの挿入)などをすると、3計算式の指定したセルが1行ずれてしまいます。 excel2016でなくとも、そうしたことで違いは生じないと思います。 1 sumなどで1セルずつ設定した計算というのは、1-1の形ですか、1-2のように[:]を含んだ形ですか。1つずつセルを指定して計算式を作っていれば、2のように行や列、セルを挿入しても、計算式の中の元の対象セルを追っかけて行き、問題は起きないと思います。1-2のように[:]を含んだ形だと、2のように行や列、セルを挿入した場合、その挿入した位置によっては、3計算式が指定していた参照先がおかしくなってしまう可能性は高いです。 1-1 =sum(b4,c6,d7,e8,f8,f9,f10)*15 1-2 =sum(b4,c6,d7,e8:f10)*15 例えば、a4のセルに「=sum(b8:f15)」と計算式を入れてあって、あとから、e6のセルでセル挿入(下方向にシフト)とやると、a4のセルの計算式は「=sum(b8:f15)」のままですから、計算対象の参照先指定が、元の参照先とは違うのを示していることになってしまいます。 もしも計算式の中で、sumの中の参照先を「:」で指定しているのであれば、そうした参照をやめる(連続範囲参照を個別セル参照に変える)のが手っ取り早い対応だと思います。 どうしても手書き書き直しは大変すぎるというのであれば、次の試作のマクロを動かしてみてください。 失敗するとヤバいので、試しに、元のシートを別のシートにコピーして、そこで試してください。 sub お試し() set hanni = range("a1:r900") '上で指定した範囲のセルにある数式?で「sum(」の中の ' 「b5:e8」のような部分を、各セル番地に書き直す for each セル in hanni kf = セル.formula www = セル.address if kf <> "" then if instr(kf, "sum") > 0 then lkf = instr(kf, "(") + 1: rkf = instr(lkf, kf, ")") - lkf skf = mid(kf, lkf, rkf): kkk = split(skf, ","): uskf = ubound(kkk) zentai = "" for i = 0 to uskf if instr(kkk(i), ":") > 0 then set dd = range(kkk(i)) rrr = "" for each rr in dd rrr = rrr & rr.address(0, 0) & "," next kkk(i) = left(rrr, len(rrr) - 1) end if zentai = zentai & kkk(i) & "," next zentai = left(zentai, len(zentai) - 1) セル.formula = replace(kf, skf, zentai) end if end if next end sub