• ベストアンサー

数式の入ったセルを前にコピーする

単純なことかと思ったら意外と詰まってしまったので、ご教授ください。 添付のような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にて使用しています。 分かりづらい説明かもしれませんが、困っています。 もしどなたか良い案があれば教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.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行目の項目のある列までコピーする

aqua0214
質問者

お礼

ありがとうございます!! まさに求めていた方法です。 分かりづらい説明の中、こんな的確な答えをいただいて本当に嬉しいです。 マクロはやっぱり勉強しなければ…と痛感しております。 回答いただき本当にありがとございました。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! まったく的外れの回答になるかもしれませんが・・・ 一つの案として書かせてもらいたいと思います。 ↓の画像のような表を作ってみました。 (締日が不明なので、敢えて開始日~締日を設定できるようにしています) 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

aqua0214
質問者

お礼

早速の回答ありがとうございました。 計算式ではなく、単純に「該当セルが空白の状態でも、式のコピーができるかどうか」だけを聞きたかったのですが、質問が複雑になりすぎて(私自身もちょっと整理しきれておらず)分かりづらい内容になってしまい申し訳ありません。 そんな中回答いただきありがとうございました。 他の方の回答にも書きましたが、今回一部だけを抜粋して表を貼り付けたのですが、実はその上下などにも色々表が入っており、レイアウトを変えることができないのが現状です。 でも色々と式を提示いただきありがとうございました。 このレイアウトの方がすっきりするような気もしますので、今後自分で作成する場合には参考にさせていただきます。 ありがとうございました。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

一案 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関数)が計算される 参考になれば

aqua0214
質問者

お礼

早速の回答ありがとうございました。 計算式ではなく、単純に「該当セルが空白の状態でも、式のコピーができるかどうか」だけを聞きたかったのですが、質問が複雑になりすぎて(私自身もちょっと整理しきれておらず)分かりづらい内容になってしまい申し訳ありません。 そんな中回答いただきありがとうございました。 今回一部だけを抜粋して表を貼り付けたのですが、実はその上下などにも色々表が入っており、レイアウトを変えることができないのが現状です。 でも色々と式を提示いただきありがとうございました。 これ以外の案件でも使えそうな内容もありましたので、参考にさせていただきます。 ありがとうございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

今一説明を理解しきれないので、お望みの物とは違うかもしれませんが、例えば締め日が毎月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日までの期間を当月分として集計します。

aqua0214
質問者

お礼

早速の回答ありがとうございました。 計算式ではなく、単純に「該当セルが空白の状態でも、式のコピーができるかどうか」だけを聞きたかったのですが、質問が複雑になりすぎて(私自身もちょっと整理しきれておらず)分かりづらい内容になってしまい申し訳ありません。 そんな中回答いただきありがとうございました。 C列の計算式には応用してみたいと思います。 ありがとうございました。

関連するQ&A

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • エクセル 数式のはいっているセルのコピー

    エクセルで、数式のはいっているセルをCtrl+ドラッグでコピーすると セル内の数式も変化しますよね? 例:SUM(A1:A5)を右にコピーするとSUM(B1:B5)のように。 これって、エクセルの基本で便利機能だと思うんですが、 これをSUM(A1:A5)のままコピーすることってできますか? 別のシートとリンクさせてグラフ化しているんですが、コピー後にひとつひとつ直すの、とても面倒で、ミスの元になりそうなんです。 よい方法ありましたら教えてください。 よろしくお願いします。

  • 可視セルへのコピー マクロ

    次のように、可視セルから可視セルへコピーしたいです。 (元の状態) A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150 dさん 済    100 eさん 未    120 fさん 済    250 gさん 未    300 hさん 未    210 この状態をB列で支払が済んでるかどうかでフィルターをかけて ABC列をコピーし、DEF列に可視セルのみコピーして A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 cさん 未    150  cさん 未    150 eさん 未    120  eさん 未    120 gさん 未    300  gさん 未    300 hさん 未    210  hさん 未    210 フィルターをはずすと A   B     C     D   E   F 名前  支払  金額  名前 支払  金額 aさん 済    150 bさん 済    200 cさん 未    150   cさん 未    150 dさん 済    100 eさん 未    120   eさん 未    120 fさん 済    250 gさん 未    300   gさん 未    300 hさん 未    210   hさん 未    210 と、未払いの人だけ、D列以降にもコピーされてる状態にしたいのです。 可視セルへのコピーはマクロを組む必要があると聞いて見てるのですが、 私が実現させたい可視セルへのコピーとまた違うプログラムでした。 どなたかよろしくお願いします。

  • セルに入ってる数式を他のセルへコピーしたい

    こちらでよろしいでしょうか? エクセルのVBでセルに入ってる数式を他のセルにコピー したいのです。 Range("c3:c5") = Range("c2") c2にはb1*a1の式が入ってるのですが、c3:c5にはb1*a1の 答えが入ってしまします。 答えではなく式を入れたいのですが・・・

  • セルのデータを、ボタンでコピーさせたいのです

    初めて質問させていただきます。 エクセル関数はある程度こなせますが、マクロはほとんど初心者です。 どのようにマクロを記述すれば良いか、わからなくて困っています。 A1のセルにコピー元のデータがあります。 この時、A4にあるボタンを押すと、A1のデータがA3にコピーされます。 またある時は、C4にあるボタンを押すと、A1のデータがC3にコピーされます。 またある時は、D4にあるボタンを押すと、A1のデータがD3にコピーされます。    A   B   C   D   E ・・・・・・ 1 100 2 3 100 100  100 4 ■  ■  ■  ■   ■ 5 6 7 ・ ・ ・ あるいは、ボタンを一つにして、B1にあるボタンを押すと A1のデータがA3にコピーされます。またある時は、B1にあるボタンを押すと A1のデータがC3にコピーされます。   A  B  C  D  E 1 100  ■ 2 3 100 100 4 5 6 コピー先のセルが少数なら、コピー先のセルを"Range"で指定して、各ボタンに割り付ければ済むのですが、入力するセルが何百とある為、これをいちいち各ボタンに割り付けて、マクロを書いて行くのは、気が遠くなる作業になってしまいます。 ボタンは一個でも、何百個あっても構わないのです。 マクロをどのように記述すれば良いでしょうか。 どうか、アドバイスをお願いします。

  • 【エクセル】横方向へ複数行の数式をコピー

    こんばんは^^ ちょっとエクセルで苦戦してる作業があるので何か良い方法があったら教えてください。   a    b     c    d    e(列) ------------------ 1| 2      3      3       2     1 2| 2      4       1      3      2 ・ ・ 9| sum  c9/a9  sum   b9*c9  b9+d9 (小計の行) 10| 2     3     3     2     1 ・ ・ ・ 14|  2      1      2      2     5 15| sum ・・・・      (小計の行) ・ ・ ・ 上記のようなレイアウトにしたとします。 1.小計行がたくさんあります。 2.それぞれの小計で合計する行数が違います。 3.横方向にsumを手軽にコピーしたいけど、列が多く、ところどころに関数が入っているので、無闇にドラッグしたりできません。 今は、例えば9行の小計を1つsumを使った後、関数が入っていない空白セルのみをctrlキーを駆使して1つ1つクリック、ペースト そして、次の小計行へ行き同じ作業を繰り返してます。 ただ、これだと横にも縦にも長いデータが入ってるので労力使いすぎます(^^; フィルタをかけて「空白以外」にして、横方向にsumをドラッグが出来たら良いなーって思ったんですが、フィルタって列にかけられないですよね? 何か良い方法ってありますか?

  • 複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

    ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • 離れたセルをコピー

    エクセルで、選択状態になっている離れたセルのデータを、位置関係を崩さずに一括でコピーしたいのですが。 例えば、A1・B5・C3・D4を、E7・F11・G9・H10にコピーするというようなことです。(貼付け対象セル以外は変化なし) よろしくお願いします。

  • 数式が入った空白のセルを合計するとき

    数式が入った空白のセルを合計するとき WINDOWS XP EXCELL 2003 です。 各セルの数式は C43 =SUM(B36-C36) D36 =SUMPRODUCT((入力!$C$2:$C$50=$A36)*(入力!$A$2:$A$50=D$1),入力!$E$2:$E$50) E36 =SUMPRODUCT((入力!$D$2:$D$50=$A36)*(入力!$A$2:$A$50=D$1),入力!$F$2:$F$50) E43 =SUM(C43+D36-E36) と数式がそれぞれに入っています。 ご教示を仰ぎたいのは D36,E36 に値がない空白のセルですがこの場合、E43 G43 I43 と表示(この場合 50,000)がされますがD36 若しくはE36に値が表示されたときのみにE43 を表示したいのですが可能でしょうか。 目的は見やすくしたいのですが。 ご指導いたたければ幸甚の至りです。

  • 式のコピー

    式のコピーですが、SUM(A1:D1)をコピーしてSUM(E1:H1)というように4行ずつずらしていきたいのですが、実際にコピーすると(B1:E1)となってしまいます。解決方法ありましたらよろしくおねがいします。

専門家に質問してみよう