- ベストアンサー
数式の入ったセルを前にコピーする
単純なことかと思ったら意外と詰まってしまったので、ご教授ください。 添付のようなExcelファイルで、それぞれ下方向にSUM関数を使って、該当月に計上された個数を上にまとめています。 1月であれば、A商品のC2に=SUM(C17:C19)と式を入れて、横(B商品・C商品・D商品)にコピーしています。 B商品 D2=SUM(D17:D19) C商品 E2=SUM(E17:E19) D商品 F2=SUM(F17:19) 今までは、締め日後に手動でA商品の計算をして、その後に横にコピーをしていましたが、毎月発生する作業でイチイチ毎回コピーするのが面倒です。 (ここでは、商品が4つしかありませんが、実際はもっと多くあります) そこで、あらかじめB商品・C商品・D商品に式などを入れておき、A商品の数式が入力されたら自動的にコピーする、というようにすることはできるのでしょうか。 マクロでも良いのですが、初心者のためA商品のセルが入力されたら、というイベント発生(条件?)のマクロがよく分かりません。 なお、式をコピーではなくSUMIF等で日付から月を取り出して…という方法以外でお願いします。 (締め日の関係で、対応月=その月の件数ではないため) Excel2003 SP3/Windows XPにて使用しています。 分かりづらい説明かもしれませんが、困っています。 もしどなたか良い案があれば教えてください。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こういう事? マクロの方が簡単なので 対象シートタブを右クリック コードの表示を選択 出てきたワークシートモジュールへコピペ Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("c2:c13"), Target) Is Nothing Then Application.EnableEvents = False Range(Cells(Target.Row, 3), Cells(Target.Row, Range("d1").End(xlToRight).Column)).Formula = Target.Formula Application.EnableEvents = True End If End Sub C2~C13に入力された数式を 1行目の項目のある列までコピーする
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! まったく的外れの回答になるかもしれませんが・・・ 一つの案として書かせてもらいたいと思います。 ↓の画像のような表を作ってみました。 (締日が不明なので、敢えて開始日~締日を設定できるようにしています) A5・B5に好みの月日を入力します。 D5セル =IF(A5="","",">="&A5) E5セル =IF(B5="","","<="&B5) B2セル =IF(B5="","",MONTH(B5)&"月") ←締日の月を選ぶようにしています。 そして D4セル~E5セルのデータを参照し、DSUM関数を使っています。 C2セル =IF(COUNTBLANK($D$5:$E$5)>0,"",DSUM($A$7:$F$30,COLUMN(),$D$4:$E$5)) として列方向にオートフィルでコピーしています。 元のデータは増えても構いませんので かなり下の方まで範囲指定しておきます 尚、開始日と締日のデータを入力するたびに合計数値は変わってきますので 右側に1月~12月までの同じ表をつくり 集計した月毎にコピー → 形式を選択して貼り付け → 「値」にチェックをいれて表に貼り付けます。 かなり回りくどい方法ですので、 参考にならなかったら軽く読み流してくださいね。 どうも長々と失礼しました。m(__)m
お礼
早速の回答ありがとうございました。 計算式ではなく、単純に「該当セルが空白の状態でも、式のコピーができるかどうか」だけを聞きたかったのですが、質問が複雑になりすぎて(私自身もちょっと整理しきれておらず)分かりづらい内容になってしまい申し訳ありません。 そんな中回答いただきありがとうございました。 他の方の回答にも書きましたが、今回一部だけを抜粋して表を貼り付けたのですが、実はその上下などにも色々表が入っており、レイアウトを変えることができないのが現状です。 でも色々と式を提示いただきありがとうございました。 このレイアウトの方がすっきりするような気もしますので、今後自分で作成する場合には参考にさせていただきます。 ありがとうございました。
- hige_082
- ベストアンサー率50% (379/747)
一案 A列を選択して、1列挿入 1行目の項目を 開始行、終了行、月、A商品、B商品・・・・とします A商品の下(D2)へ =IF($B2="","",SUM(INDIRECT("D"&$A2&":D"&$B2))) 12月までコピーしておく B商品の下(E2)へ =IF($B2="","",SUM(INDIRECT("E"&$A2&":E"&$B2))) 12月までコピーしておく 商品の数だけ数式を設定し、コピーしておく 対象月の開始行と終了行を入力する 1月を例にすると A2=17 B2=19 を入力すれば 各商品の合計(SUM関数)が計算される 参考になれば
お礼
早速の回答ありがとうございました。 計算式ではなく、単純に「該当セルが空白の状態でも、式のコピーができるかどうか」だけを聞きたかったのですが、質問が複雑になりすぎて(私自身もちょっと整理しきれておらず)分かりづらい内容になってしまい申し訳ありません。 そんな中回答いただきありがとうございました。 今回一部だけを抜粋して表を貼り付けたのですが、実はその上下などにも色々表が入っており、レイアウトを変えることができないのが現状です。 でも色々と式を提示いただきありがとうございました。 これ以外の案件でも使えそうな内容もありましたので、参考にさせていただきます。 ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
今一説明を理解しきれないので、お望みの物とは違うかもしれませんが、例えば締め日が毎月25日だとした場合、C2に↓の式を入れて、コピーしてみてください。 =SUMPRODUCT((MONTH($A$17:$A$26+6*(DAY($A$17:$A$26)>25))=$B2)*(C$17:C$26)) なお、B2:B13の「1月」~「12月」には1~12だけを入れて書式で「月」を付けてください。 また、A17:A26の日付は、シリアル値が入っている物とします。 これで、前月26日~当月25日までの期間を当月分として集計します。
お礼
早速の回答ありがとうございました。 計算式ではなく、単純に「該当セルが空白の状態でも、式のコピーができるかどうか」だけを聞きたかったのですが、質問が複雑になりすぎて(私自身もちょっと整理しきれておらず)分かりづらい内容になってしまい申し訳ありません。 そんな中回答いただきありがとうございました。 C列の計算式には応用してみたいと思います。 ありがとうございました。
お礼
ありがとうございます!! まさに求めていた方法です。 分かりづらい説明の中、こんな的確な答えをいただいて本当に嬉しいです。 マクロはやっぱり勉強しなければ…と痛感しております。 回答いただき本当にありがとございました。