• 締切済み

SUMIFの代用

お世話になります。 ファイル2からファイル1へリンクして計算をしてますが、同時に開いてないと更新されない(VALUE)となるため調べましたら、SUMIF・COUNTIF関数はこのような現象が発生するということでした。 ファイル1はSUMIFを多用しており納得はしましたが、SUM+IFに置き換えれば良いとのことで試しましたが、計算結果がうまくでません。 ファイル1:抜粋    A   B   C 1  12/1  AAA  100 2  12/2  AAA  200 3  12/3  AAA  300 4  12/4  AAA  400 5  12/5  BBB  500 というデータがあります。A:日付 B:コード C:数量 ファイル2表にてAAAの合計数量を出したいのですが、 SUMIF([ファイル2.XLS]sheet1!$B:$B、(ファイル1のコード入力セル)、[ファイル2.XLS]sheet1!$C:$C) にてできるのですが、ファイルを同時に開かずに行いたいのです。 SUM(IF([ファイル2.XLS]sheet1!$B:$B=(ファイル1のコード入力セル)、[ファイル2.XLS]sheet1!$C:$C、0)) に置きかえてもうまくでません。 どなたかアドバイスをお願いいたします。

みんなの回答

noname#99913
noname#99913
回答No.5

 いったんデータをファイル2にリンクしたうえで、SUMIF関数を使えばできます。  ファイル2に    A    1  ='ファイル1のパス[ファイル1.xls]Sheet1'!A1 2  ='ファイル1のパス[ファイル1.xls]Sheet1'!A2 3  (以下同じ) という具合にいったんデータをリンクで取り込み、それに対してSUMIF関数を使います。

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

こんばんは。 Excelシートは、古いデータベース機能が残されていて、シートの中のセルを1つなら、静的な値のみを呼び出すことが可能です。現在では、DAOやADOという、データベース・オブジェクトで呼び出しますが、やはり、同じ原理です。 あくまでも、アプリケーションのクラス・オブジェクトで生成されたインスタンスは、そこで演算など計算しなければ、インスタンスは必要ありません。ご質問で出ている範囲(Range)オブジェクトは、確かに、シート・オブジェクトでなければ出来ませんから、質問者さんのような方法は、仮にフルパスでも不可能です。確保した値を失うと#VALUE! が出てしまいます。 だから、開いているシートか開いているセルに、 ×[ファイル2.XLS]sheet1!$B:$B (範囲にする場合は、シートオブジェクトが必要です) 例: B列: B1: ='C:\Documents and Settings\[UserID]\My Documents\[ファイル1.xls]Sheet1'!$B1 入れて、データが出ているところまで、コピーします。 同様に、C列にも、 C1: ='C:\Documents and Settings\[UserID]\My Documents\[ファイル1.xls]Sheet1'!$C1 で、同じくデータが出ているところまで、コピーします。 (もちろん、ブックを開いて、リンクさせて、それを閉じれば、以上のようになります) そうして、 リンクされたシートに出ている値に対して、 例: =SUMIF(B1:B1000,">"&"12/5"*1,D1:D1000) 12/5より以上 とすれば出来ます。

noname#204879
noname#204879
回答No.3

[回答番号:No.1この回答への補足]に対するコメント、 》 アドバイスお願いします。 え?私の提案式に何も反応していないから、アドバイスのしようがありません。 》 ファイル1でSUMIFをやるとエラーになります 「というデータ」が「ファイル1」にあるのなら、同じファイル内で「SUMIFをやる」わけで、最初の質問と矛盾していますよ。 「ファイル2でSUMIFをやると…」の間違いですか?しっかりしてください。

shogo814
質問者

補足

何度もすみません。ファイル2にてSUMIFをやるが正しいです。

  • kmmk16
  • ベストアンサー率46% (32/69)
回答No.2

2つのファイルを開かないと無理ですよ オブジェクトのインスタンスがないので参照出来ません。

noname#204879
noname#204879
回答No.1

「…というデータ」は「ファイル1」にあると仰っているから、貴方の式の「ファイル2」は「ファイル1」の間違いでしょ? =SUMIF('fullpath[ファイル1.xls]Sheet1'!$B:$B,(ファイル1のコード入力セル),'fullpath[ファイル1.xls]Sheet1'!$C:$C) fullpath は「ファイル1」が存在する場所(パス、フォルダ、ディレクトリ)で、例えば次のようになります。 C:\Documents and Settings\Shogo814\My Documents\

shogo814
質問者

補足

私のまちがいでした。ファイル1が正解です。質問の打ちまちがいでした。すみません。実際はファイル1でSUMIFをやるとエラーになります。アドバイスお願いします。

関連するQ&A