• ベストアンサー

シートAとシートBのあるセルの合計をシートCに出したい

Office2003のVBAを勉強中です。 2つのエクセルファイル(ファイルA、ファイルB)があります。 ファイルA、Bにはシートが一つづつあり、そこには同じフォーマットで表が書かれています。 ファイルA、Bのシートに書かれている表の合計を新規に作成したエクセルファイルCに書き込みたい場合、皆さんならどのようにされるでしょうか? 僕は下記のように考えました。 1.ファイルCを作成 2.ファイルAの対象シートをファイルCのシート1へコピー 3.ファイルBの対象シートをファイルCのシート2へコピー 4.ファイルCのシート3にシート1とシート2の合計を計算表示 「そんな手間な事をせずとももっと・・・」だとかあるようでしたら、 皆さんのご意見をお聞かせください。 それともう一つ、シート1の指定セルとシート2の指定セルの合計をシート3の指定セルに計算表示するのはどのようなロジックを書けばよいのでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 >Office2003のVBAを勉強中です。 私のいつもの持論なのですが、VBA勉強中は、なるべく、ワークシートのごちゃごちゃしたものには、手を出さないほうがよいですね。1年掛かるものが、2年になってしまいます。ワークシートを扱うと、結構つまらないことで振り回されるので、「ロジック」とは関係のないところに行ってしまいます。 とはいえ、実務上の問題は避けては通れないのですから、軽く流す程度にしたほうがよいと思います。 >僕は下記のように考えました。 1~4 それで良いとは思うけれど、それを現実化させるというのは、実は、意外とつまらない部分でつまづくことが多いかもしれません。 まったく、同じ造りのシートだとしたら、#3の[統合=Consolidation] が最も便利かなって思います。 ただ、元のデータのブックが開けてある状態なら、意外に単純な方式で出来ます。C列だけを計算すればよいのですね。 1~3行目まであるデータで、A列,B列が項目と明細が入っていて、C列が計算行です。 ひとつのSheet1は、  A   B    C 日時  名前  金額 20061201  Aさん  100 20061202  Cさん  200 20061203  Bさん  100 同じようなシートで、金額だけ違うような場合は、 マクロは、以下のようになります。 Sub TestSample1() Dim wb1 As Workbook Dim wb2 As Workbook Dim newWb As Workbook Set wb1 = Workbooks("TEST061.XLS") Set wb2 = Workbooks("TEST062.XLS") Set newWb = Workbooks.Add With wb1.Worksheets("Sheet1") '項目のコピー  .Range("A1", .Range("A65536").End(xlUp).Offset(, 2)).Copy _   newWb.Worksheets(1).Range("A1") End With With newWb.Worksheets(1)   'C列に数式を作る   .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).FormulaLocal _    = "=[" & wb1.Name & "]Sheet1!RC +[" & wb2.Name & "]Sheet1!RC"   '値貼り付け   .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).Value = _   .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).Value   '合計を出す   .Range("A65536").End(xlUp).Offset(1, 2).FormulaLocal = _   "=SUM(" & .Range("A2", .Range("A65536").End(xlUp)).Offset(, 2).Address(0, 0) & ")"   End With End Sub なお、保存は手動でしてください。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

ブックA、ブックBを開いた状態でブックAをアクティブにする。 1)ブックAに新規シート追加 2)新規シートにブックAのSheet1とブックBのSheet1のデータを統合 3)新規シート(ActiveSheet)を新規ブックに移動 4)新規ブックをブックCとして保存 の操作をマクロ記録すると以下のようなマクロができあがります。(少し余分な行を削除してあります) この方法だけが正しいわけではありませんので、あくまで「ご参考」です。 マクロはブックA、もしくはブックBの標準モジュールシートに貼り付けてください。 Sub Macro1()  Worksheets.Add  Range("B2").Select  Selection.Consolidate Sources:=Array("[BookA.xls]Sheet1!R2C2:R3C3", _    "[BookB.xls]Sheet1!R2C2:R3C3"), Function:=xlSum,   TopRow:=False, LeftColumn:= _     False, CreateLinks:=False  ActiveSheet.Move  ActiveWorkbook.SaveAs Filename:="Z:\BookC.xls", FileFormat:=xlNormal, _    Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _    CreateBackup:=False End Sub

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

1.ファイルCを作成 2.式に「=SUM('C:\My Documents\excel\[ファイルA.xls]Sheet1'!A1:E20,'C:\My Documents\excel\[ファイルB.xls]Sheet1'!B2:F50)」と入力 以上。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

合計だけ必要なら・・・ コピーして貼付けをする時に「形式を選択して貼付け」という機能があります。 ひな形を作成しておいて 1.ファイルAの表をファイルCのシート1へ[値]コピー 2.ファイルBの表をファイルCのシート1へ[加算]コピー

関連するQ&A

  • エクセル:偶数セルと奇数セルそれぞれの合計

    エクセルで作成した表で 「A2+A4+A6」 や 「B3+B5+B7」のようにそれぞれ偶数セル、奇数セルの数値の合計を表示させたいのですが、よい計算方法はありますか?それとも何十個というセルを地道に足していくしかないのでしょうか? 少ないセル数ならいいのですが、多くのセルの合計を出したいので困っています。どなたか分かりやすく教えていただけないでしょうか?お願いします。

  • VBAを使ってシートAの3ヶ所のセルでシートBの計算式を行う。

    シートA    シートB   A B C D     A B C D 1 10 20 30 ()   1 10 20 30 (計算式) 2 10 20 30 () 3 10 20 30 () 4 10 20 30 () (1)シートAのA1,B1,C1をコピーしてシートBのA1,B1,C1に代 入する。D1には計算式が入っているので結果が表示される。 (2)シートD1の計算結果をシートAのD1に代入する。 (3)次はシートAのA2,B2,C2をコピーしてシートBのA1,B1,C1 に代入する。D1には計算式が入っているので結果が表示される。  シートD1の計算結果をシートAのD2に代入する。 (4)上記の動作をシートAのA列のセルに数字がある場合は繰り返し行  う。

  • A列とB列の合計を行ごとにC列に表示させたい

    お早うございます。エクセルのセルの計算で教えてほしいのですが、A列とB列の合計を行ごとにC列に表示させたいのです。例えばA1のセルに“1", B1のセルに“2"と入れます。それで、C1のセルに“=A1+B1"と入力します。そうするとC1のセルは“3”と表示されますよね。そこで同じように違った数字の合計を100行ほどそれぞれC列に表示させたいのです。セルごとではなく縦全部列ごとでもかまいません。宜しくお願いします。

  • IF(B1="","",A1*B1)の合計

    セルC1に次の計算式が入っています。 IF(B1="","",A1*B1) 行9までコピーされています。 C10のセルで SUM(C1:C9) で合計したいと思っています。 B列に空白がある場合、 #VALUE!のエラーとなります。 IF(B1="","",A1*B1) の計算式を残したままで 解決方法はありませんか?

  • エクセル:シートごとに表記してあるセルの合計

    表題の通りなのですが Sheet1 の A1 セルに 「100」 Sheet2 の A1 セルに 「150」 Sheet3 の B2 セルに 「300」 などを入れているのですが、この値の合計を Sheet4 の C2 セルに 入れたいのですが、どういう計算式にすればよろしいでしょうか? いろいろ調べてるのですが、明確な解決策がでずこまっている状態です。 わかる方がいましたらおしえてください。

  • 1シート~12シートのセルの合計は

    1シートの中では A2からA10のセルの合計 =SUM(A2:A10)  は式が出来たのですが 1~12シートの A2のセルの合計を 13シートの A2に 計上したいのですが どうしたら計算できますか?

  • 複数の条件を満たすセル数の合計は配列関数を使う?

      A列 B列 ------------- 1  1  2 2  1  1 3  3  5 4  1  7 5  4  8 6  1  4 7  7  5 8  5  6 9  1  1 10  9  3 上記の表でA列もB列も“1”であるセルの数を数えたいのです。 C列の1~10行目に   =IF(A1=1,IF(A1=B1,1,0),0) と計算式を入力・コピーしその合計を求めることができますが、 計算用の列を作らず、別のシート上のセルに 計算結果のみ表示させたいと思っています。 {=SUM(IF(Sheet1!A1:A10=1,IF(Sheet1!B1:B10=1,1,0),0))} 上記の計算式で一応計算できているようなのですが、 配列関数というのがなんなのか良く分からないのです。 これで大丈夫なのでしょうか? お詳しい方ご助言をお願いします。

  • 異なるファイルからセル合計を送る

    質問方が難しいのですが、例えばエクセルのファイルAにあるセルA-1の合計をファイルBにあるセルA-1に送るにはどのようにすればよいのでしょうか?異なるシートなら出来るのですが、ファイルが異なると分かりません。宜しくお願いします。

  • エクセルで合計ゼロになるセルがある

    シートによって成るみたいですが、 いくつかのセルの合計したくても何度やってもゼロになります。 ちょっと離れたセルで合計値を出すと出来たりします。 仕方なく、卓上計算機にいちいち打ち込んで合計して エクセルの最大の良さが使えず困っています。 それに、このシートではコピーが全く出来ず、関係ない数字が勝手にに出たりします。 出来るセルもあります。 以前にも時々こんなことがありました。 シート上を全部削除したり、また表を作ったりの繰り返しをしたりしますとこういう現象になるのかなとも考えています。 どうしたら直るでしょうか。 Windows Vistaです。 どなたかお助けをお願いします。

  • エクセル2003 #N/A含む複数シート数値合計

    複数のワークシートの数値の合計がうまく出ません。 A,B,C,Dという名前のシートのセルA2の数値の合計を 「集計」というシートのセルA3に出したいのですが (ちなみにA,B,C,DシートのセルA2にはvlookup関数がはいってます) 例えばシートBのセルA2の表示が#N/Aだと sum、sumif関数で合計を出そうとしても 「集計」シートのセルA3には#valueと出てしまいます。 うまく#N/Aをのぞいて数値の合計値を出す方法はありますか?

専門家に質問してみよう