- 締切済み
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)) に置きかえてもうまくでません。 どなたかアドバイスをお願いいたします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
いったんデータをファイル2にリンクしたうえで、SUMIF関数を使えばできます。 ファイル2に A 1 ='ファイル1のパス[ファイル1.xls]Sheet1'!A1 2 ='ファイル1のパス[ファイル1.xls]Sheet1'!A2 3 (以下同じ) という具合にいったんデータをリンクで取り込み、それに対してSUMIF関数を使います。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 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より以上 とすれば出来ます。
[回答番号:No.1この回答への補足]に対するコメント、 》 アドバイスお願いします。 え?私の提案式に何も反応していないから、アドバイスのしようがありません。 》 ファイル1でSUMIFをやるとエラーになります 「というデータ」が「ファイル1」にあるのなら、同じファイル内で「SUMIFをやる」わけで、最初の質問と矛盾していますよ。 「ファイル2でSUMIFをやると…」の間違いですか?しっかりしてください。
- kmmk16
- ベストアンサー率46% (32/69)
2つのファイルを開かないと無理ですよ オブジェクトのインスタンスがないので参照出来ません。
「…というデータ」は「ファイル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\
補足
私のまちがいでした。ファイル1が正解です。質問の打ちまちがいでした。すみません。実際はファイル1でSUMIFをやるとエラーになります。アドバイスお願いします。
補足
何度もすみません。ファイル2にてSUMIFをやるが正しいです。