• 締切済み

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

  • ExcelのSUMIF関数についてです。

    ExcelのSUMIF関数についてです。 下記のような表を使用して、 商品コードが一致する商品数の合計をD2セルに入力したい。 (※A2,A3,A4...とA列の中でコードが一致したら、その数量の合計を出す)       A        B       C    D 1     商品コード  商品名   数量   計 2     PD0001    AAA     50 3     PD0019    BBB     20 4     PD0009    CCC     150 5     PD0001    AAA     1 6     PD1004    DDD     15 7     PD1027    EEE     50 8     PD0009    CCC     40 9     PD0019    BBB     30 :      :         :       : :      :         :       : sumif関数を使用して、 D2に =SUMIF(A:A,A2,C:C) を入力コピーすると     D     計 2   35 3    1 4   50 5   45 6    0 7    0 8    0 9    0  :    : :    : となってしまいます。     D     計 2   51 3   50 4   190 5   51 6   15 7   50 8   190 9   50  :    : :    : という出力にするにはどうしたらいいでしょうか? ちなみに、コードではなく商品名で D2に =SUMIF(B:B,B2,C:C) を入力コピーするとうまくいきます。 初歩的なことなのかもしれませんが、 商品コード数も数量もかなり膨大なものを計算するので困っています。 宜しくお願いします。

  • SUMIFとIFの組み合わせ方

    実際の関数のため、シート参照があり分かりにくくてすみません。 SUMIF関数で合計する「条件と範囲」を変えたい場合の質問です。 最初はSUMIFの中で条件を入力してみたのですが、そもそも以下にあるように真と偽だけでは、偽(それ以外の場合)はすべて計算されてしまうため、IFを用いて先に判断してからとおもったのですが、値が0のままです。 IFとSUMIFの使い方が解るかた教えていただけたら幸いです。 IFとSUMIF以外でも回答あればよろしくおねがいします。 【IFの元、B6もしくはC6に値が入っているなら処理をする、両方に値が入っているか値が入っていないなら空欄】 =IF(AND($B6<>0,$C6=0),"勘定",IF(AND($B6=0,$C6<>0),"項目","")) 【上記IFに対してSUMIFで必要な範囲から合計金額を集計】 =IF(AND($B6<>0,$C6=0),SUMIFS(入力【契約書】!$D:$D,入力【契約書】!$E:$E,$C6,入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4),IF(AND($B6=0,$C6<>0),SUMIFS(入力【契約書】!$D:$D,入力【契約書】!$C:$C,$B6,入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4),""))

  • エクセルの関数ご認識についての質問です。

    =IF(COUNTIF(火!$C$2:$N$97,B63)=0,"",IF(SUMIF(火!$C$2:$N$97,B63,火!$M$2:$M$97)=0,"",SUMIF(火!$C$2:$N$97,B63,火!$M$2:$M$97))) という式を、セルに入力し、火シートにはいろいろな業者名が入っているのですが、シートにはc列にB63の対象である業者名がのっていて、その業者の計算対象であるM列には空白で何もないのに、1170という計算結果が出てしまいます。 この1170は、横のN列には、SUMの合計値としてあるのですが、1170という単体の入力はありませんし、そもそも、その行には業者名はなく、合計という名前のセルがあるだけです。 また、その業者の行のM列(SUM計算対象セル)に50という数字を入れると、計算結果が1220(1170+50)という表示になります。 そして、この症状で下まで一括コピーをしているのですが(右下に出る黒十字の引っ張るもの)、このセルだけこの症状が出ます。 わかりにくくて申し訳ありませんが、この1170はなぜ入ってしまうのでしょうっか? 長くなり、申し訳ありませんが、お答えいただけると嬉しいです。

  • SUMIFの計算結果が0

    ブック内に商品別のシートが数枚あり、 それを月別集計する別シートを作っています ■商品シート A   B   C    D    E 月日  商品  仕入  出荷  在庫 ↓出荷状況によって入力が増減します ■月別集計シート A1=TODAY()  B1=型式  C=在庫 ↓商品別に一覧で在庫表示させる A1には、今日の日時を表示(仕様) C=在庫セルにSUMIFで在庫数計算させているのですが、、、 計算結果が0になってしまいます =SUMIF('型式シート'!$A$1:$A$500,">=MONTH($A$1)",'型式シート'!$C$1:$C$500) -SUMIF('型式シート'!$A$1:$A$500,">=MONTH($A$1)",'型式シート'!$D$1:$D$500)   その月の全仕入から全出荷を引いて在庫計算させているのですが、 SUMIFの計算結果が0になってしまいます。 記述もしくは検索条件のやり方が違うのでしょうか? お手上げ状態です、、TT

  • エクセル2010の絶対参照について。

    エクセル2010についての質問です。 ファイルはエクセル2003?2007?のものを互換モードで使っております。 よろしくお願い致します。 sheet1のセルA1に、別のシート(Sheet2)のA2~A11の合計をオートサムで求めると数式が=SUM([Sheet2.xls]Sheet2!$A$2:$A$11)となっています。 sheet1のセルB1に数式=SUM([Sheet2.xls]Sheet2!$B$2:$B$11) sheet1のセルC1に数式=SUM([Sheet2.xls]Sheet2!$C$2:$C$11) sheet1のセルD1に数式=SUM([Sheet2.xls]Sheet2!$D$2:$D$11) をオートフィルか、コピーアンドペイストで素早くやりたいのですが、 数式の$を消して、=SUM([Sheet2.xls]Sheet2!A2:A11)でオートフィルでできるのですが、 自動で$が入力されるのがなぜだか分かりません。 $が自動で入力される理由と、$があるなしの違いを、理解してる方に聞きたいと思い 質問しました。 よろしくお願い致します。

  • SUMIF関数について(若干長文です)

    なぜかSUMIF関数[SUMIF(範囲, 検索条件, 合計範囲)]を使うとき範囲や合計範囲を別ブックのセルにリンクすると、そのブックを開いていないと#VALUE!のエラー値を返してくるんです。 例えば次のような場合です。 book1のsheet1にA1:A4に4 種類のエアコンの価格\100,000、\150,000、\200,000、\300,000、B1:B4 にエアコンの価格に対応する取付手数料 \8,000、\9,000、\12,000、\15,000が入力されているとします。 別ブックbook2のA1にSUMIF関数を使って=SUMIF([book1.xls]Sheet1!A4:A7,">120000",[book1.xls]Sheet1!B4:B7)というように範囲をbook1のセルにリンクさせ、エアコンの価格が120000以上の取付手数料の合計を求めようとする場合です。 book1を同時に開いている場合は、ちゃんと36000の値を返してくるんですが、book1を閉じてbook2を更新すると#VALUE!のエラーになるんです^^;他の関数を使っていてこんな事はなかったんですが、この関数だけはなぜかこんなになるんです。 ちなみに私はEXCEL2000とEXCEL2003で試したんですがダメでした〇| ̄|_これを解決する方法はないんでしょうか? みなさんの知恵をお貸しください。よろしくお願い致します。

  • SUMIFの使い方で困っています。

    SUMIFの使い方で困っています。 下記の数式でデータ件数をカウントしたいと思い、使ってみたのですが、 そのデータをカウントする行には"1"の数字以外に"×"が含まれています。 この場合、"×"をカウント外にしたいのですが、どのようにすればよいか 悩んでいます。お力をいただけるとうれしいです。 {=SUM(IF(Sheet1!A2:A1000="●●",IF(Sheet1!E1:E1000>=1,1,0)))}

  • 【Excel】参照している文字と同じはずなのに認識されません

    エクセルでA1に「20」と入力したら「平成20年」と入力されるように書式設定しました。 他のセルにsumif関数を使って別のシートから20の含まれるセルを sumif(Sheet2!B:B,A1,Sheet2!C:C) として読み込もうとしたら「0」と計算されませんでした。 B列に20が含まれている箇所はいくつもあるのに計算されません。 仕方がないので、A1のかわりに"20"と入力したところうまく計算されました。 一体何が、悪いのでしょうか?

  • SUMIF関数での参照範囲 (EXCEL 2000)

    Sheet1 に A列=日付、B列=課コード、C列=金額 Sheet2 に A列=課コード、B列に SUMIF でSheet1の各課ごとの金額を出したいのですが、その際、Sheet2!C1のセルに日付を入れるとその日のみの金額を抽出するような式できませんか?

  • Excelの計算式内の文字列の一括置換は出来ますか

     Excelで、計算式の命令内の文字列を置換する方法はあるでしょうか。例えば、あるワークシートのセルで別のファイルやワークシートのセルを参照して計算している時、ほとんど同じ計算式で参照先だけを変えたい場合です。計算結果のワークシートのA列で、  A1=sum('G:\北海道'!A1:A100)  A2=sum('G:\北海道'!B1:B100)  A3=sum('G:\北海道'!C1:C100)・・・ となっているとします。つまり、北海道.xlsというシートの1から100までの列範囲の和を計算しているとして、B列には同様の青森県.xlsからの同じセル範囲の同じ計算、C列には岩手県.xlsからの同じ計算、D列には・・・というように、計算式が全く同様で、参照元のファイル名だけを変えたい場合です。  もう一つ、類似のものとして、計算結果のワークシートで、  A2=sum('G:\北海道'!B1:B100)  A3=sum('G:\北海道'!C1:C100)  A4=sum('G:\北海道'!D1:D100)・・・・ というように、計算式内の行や列を表す記号や数値を置換することは可能でしょうか。  同じような作業は出来るだけ簡単な操作でできる、というのが良いソフトのイメージなのですが、私が現在知る範囲では1つ1つ式を書き換えています。特にリンク貼り付けでやると、計算結果のワークシートでうまくコピーができません(上記では、北海道をB1で青森県に変えておいてそれをB2以下にコピーすると上手く行かない)。  宜しくお願い致します。

専門家に質問してみよう