• 締切済み

SUMIFSの代わりに配列を使いたいがエラーになる

ExcelでSUMIFS関数を用いて集計を行っています。ただし集計を行う上で別のExcelファイルから参照をしているため、SUMIFS関数で算出した結果を表示するには参照しているExcelファイルを開く必要があります。 参照しているファイルをいちいち開くと手間がかかるので、別の方法を検討したところ、配列の{=SUM(IF・・・を用いることで可能だということがわかりました。 同僚が作成した配列の式をもとに作成を行ったのですが、配列中で参照しようとしている列ではエラーもしくは0が表示されます。(本来は別の集計された数字が表示されます) 同僚が作成した配列の式では例えばO列を参照してエラーもなく表示されるのですが、私が追加したAI列ではエラーとなります。 何か配列の式を作成する上で定義すべきことなどがあるのでしょうか? もしくはSUMIFS関数以外に参照ファイルを開かずに解決できる方法がございましたらご教示をよろしくお願いします。

みんなの回答

  • Nouble1
  • ベストアンサー率100% (1/1)
回答No.3

失礼、 誤解を 孕み易い、 記載を 認めました。 故、 お詫びの 上、 注釈を 示します。 該当文面、 「さて、 両ファイルを 開きます。 式を 書き込みたい、 セルに、 =参照先ファイルセル範囲 こう 書き込んでください。」 注釈、 勿論ですが、 式として「参照先ファイルセル範囲、」 とは 書かず、 実セル 範囲指定に、 読み替えて、 読み替えた ものを、 式に お書き込みください。                 以上。 なんとも、 紛らわしい 内容を、 示し、 済みませんでした。

  • Nouble1
  • ベストアンサー率100% (1/1)
回答No.2

〉参照しているファイルをいちいち開くと手間 いえいえ、 とても 単純な、 拍子抜けするような、 方法で 十分ですよ。 さて、 両ファイルを 開きます。 式を 書き込みたい、 セルに、 =参照先ファイルセル範囲 こう 書き込んでください。 たった此だけで、 参照先ファイルを 閉じても、 参照され続けますよ。 又、 任意条件で 集計したい、 場合は、 少しだけ 応用して、 =SUMPRODUCT((参照先条件記載セル範囲=指定条件値)*(参照先集計値セル範囲)) 此だけで、 参照先ファイルを 閉じても、 参照され続けますよ、 何とも 拍子抜けする位、 単純ですよね? 例えば、 参照先ファイル名が OKWEBenglaw様01-01 条件記載セル範囲が Sheet1'!$A$1:$A$1000 集計値セル範囲が  Sheet1'!$B$1:$B$1000 と、 した 時、 =SUMPRODUCT(('[OKWEBenglaw様01-1.xlsx]Sheet1'!$A$1:$A$1000=$A$1)*'[OKWEBenglaw様01-1.xlsx]Sheet1'!$B$1:$B$1000) 書き込み後は、 参照先ファイルを 閉じても、 記載内容が 自動的に、 変わり、 ファイルを 参照し続けるので、 こうするだけで 十分ですよ。 尚、 配列数式中で SUM構文を、 使用するのは お勧めできません。 何故なら、 特殊な 機能が、 SUM構文には 盛り込まれているので、 値が 常に、 同じではなく。 故に、 信頼性に 欠けるからです。 まぁ、 抑も そんな、 複雑な 式を、 書かなくても 十分なのですから、 不要ですよね。

  • SI299792
  • ベストアンサー率48% (714/1475)
回答No.1

できますよ、数式の書き方が間違っていると思います。 具体的な事が書いてないので、これ以上答えようがありません。 こちらで勝手に例を決めます。 Book1のA1~A10 が"A" の場合、B1~B10 を加算 =SUM(IF([Book1.xlsx]Sheet1!A1:A10="A",[Book1.xlsx]Sheet1!B1:B10)) 他の書き方。これなら配列数式にする必要はありません。 =SUMPRODUCT(([Book1.xlsx]Sheet1!A1:A10="A")+0,[Book1.xlsx]Sheet1!B1:B10)

関連するQ&A

  • エクセル関数 SUMIFS

    エクセル関数 SUMIFS について教えてください。 2010年版で作成した集計表ですが、2000年版でSUMIFS関数が使えません。 なんとかその関数だけでも使いたいのですが、どなたか良い方法を教えてください。 ほかの関数の組み合わせでもよいですし、どんな方法でもいいですので・・・。

  • エクセル2007 SUMIFS

    SUMIFS関数を使用して複数条件の集計をしたいと思ったのですが、 うまくいかず、SUMPRODCT関数で対応しました。 SUMIFS関数について質問ですが、 SUMIFS関数の合計範囲は1列と決まっているのでしょうか? また、合計範囲・条件範囲は同じ行でなければならないのでしょうか? そのように変更するとうまくいきます・・・ うまくいかなかった状況は下記のとおりです。 表1  A   B   C   D   E 1   4月  4月  4月  4月 2東京  5   2   4   1  3東京  1   8   3   2 4神奈川 7   0   3   9 5千葉  8   5   4   2 6千葉  2   1   1   1 7埼玉  4   8   5   2 表2   A    B   10    4月 11東京  26 12神奈川 19 13千葉  24 14埼玉  19 表2のB11に『SUMIFS(B2:D7,A2:A7,A11,B1:E1,B10)』 (絶対参照を省いてい書いています) 仕事上は解決しましたが、SUMIFSでうまくいかなかったことが気になるので、ご教授願います。

  • SUMIFS関数について

    スプレッドシートでSUMIFS関数を使って別のタブにある表から条件に合う合計を集計しております。一つのシートではSUMIFS関数使って正しい数値を反映することができました。ところが同じ様式のシートをコピーしたものに同じ数式を入力したところ値が0になってしまいました。 数式が合っているのに数値が反映されない場合の原因が分かりましたらご教示いただけますと幸いです。

  • エクセル2010のSUMIFS関数について

    A列に日付、C列に文字列、E列に数値があります。 仮に、日付は2013年4月だけ、文字列は”事務” だけに条件を絞ってE列の数値を合計する場合、エクセル2000では =SUMPRODUCT((C$1:C$1000="事務")*(TEXT(A$1:A$1000,"yyyymm")="201304")*E$1:E$1000) でうまくいきました。 こんどエクセルが2010になったので、あたらしくできたSUMIFS関数でやってみようと思い =SUMIFS(E:E,C:C, ”事務”,TEXT(A:A,"yyyymm"),”201304”) としましたが「数式が正しくありません」とエラーになってしまいます。 SUMIFS関数だと列のセル範囲を指定しなくていいので使いたいのですが・・・。 F列を作業列とし、ここにA列の日付をyyyymm形式の文字列とすれば =SUMIFS(E:E,C:C,"事務 ",F:F,"201304") で出来ますが、ほかにいい方法はないでしょうか?

  • sumifs関数について

    sumifsで合計を出したいのですが、集計されるセルとしないセルがあり困っています。    A    B    C    D   社名  役職  氏名  vlookupで引っ張ってきた値 1  a 役員   A        2  b    社員   B     3  c    社員   C D列にはそれぞれvlookupでひっぱてきた値が入っているます。 計 10  a   役員   =sumifs(D列,A列,A10,B列,B10) 大雑把な書き方で恐縮ですが、上記の計のように各社の役員、社員でD列の合計をそれぞれ出していきたいのですが、エラー表示ではなく 0 と集計結果で出ます。 きちんと集計結果が出ているセルと出ていないセルとで書式なども確認したのですが、相違点が見当たらず修正に行き詰りました。 どなたか、原因がわかる方がいましたらご教示下さい。 宜しくお願い致します。

  • SUMIFS関数の質問

    エクセルで A列のあたいがE1セルに一致し、B列の値が文字列"00"でないC列の数値を合計したい場合、 これまでエクセル2003の時は =SUMPRODUCT((A2:A15=E1)*(B2:B15<>"00")*C2:C15) のように書いてきました。 これをエクセル2010で、SUMIFS関数にしようと思い =SUMIFS(C:C,A:A,E1,B:B,<>"00") としてみました。 ところが、テストでわずか14行でやってみると答えが違うのです。 わたしのSUMIFS関数の理解があやまっているのでしょうか? 教えてください。 テストに使った2行目から15行はこんな感じです。E1セルには文字列 A があり、 =SUMPRODUCT((A2:A15=E1)*(B2:B15<>"00")*C2:C15)  は27を =SUMIFS(C:C,A:A,E1,B:B,"<>00")  は28を返します。 A 00 1 A 01 2 A 02 3 A 03 4 A 04 5 A 05 6 A 06 7 B 07 8 B 08 9 B 09 10 B 10 11 C 11 12 D 12 13 D 13 14

  • SUMIFSの検索条件で文字後ろの空白を無視

    =SUM(SUMIFS(A2:A800,B2:B8000,"東京",C2:C8000,{"*-200","*-200-*"},D2:D8000{"AB1","AC1","AD1"})) 以上の関数のC列のOR条件"*-200"によって、XXXXXX-200の行も集計したいのですが、200の後ろに空白があり、集計できませんでした。 (空白を手作業で削除したら集計できました。) データ表中には複数このような空白を含んだものがありますので、上記集計関数式で、空白を無視するような方法をご教授願います。

  • SUMIFS関数について

    宜しくお願いいたします 先にSUMIFの件で質問して=SUMIFS関数で出来るとの回答を頂き よく確かめずに出来たつもりで質問を締め切りましたが(反省)何としても出来ませんが どこか間違いが有るでしょうか =SUMIFS(B:B,A:A,"本",A:A,"えんぴつ")の式で0と表示されてしまう A  B 本  500 えんぴつ  200 ペン  100 本  500 まんが  300 ペン  100 えんぴつ  50

  • ExcelのVBAのSUMIFS関数をfxで使うと

    ExcelのVBAのSUMIFS関数をfxで使うと正常に表示されますが、VBAで使うと負数がゼロ表示されます。何故でしょうか?

  • エクセルの配列関数の制限について

    エクセルの配列関数の制限について V列にX列・Y列・Z列・AA列・AB列・AC列・AE列・AG列・P列を参照した配列関数を 下のように入力しています。 {=SUM((Y$1:Y$500=F7)*(Z$1:Z$500=H7)*(AA$1:AA$500)*(P7="○"),(AB$1:AB$500=F7) *(AC$1:AC$500=H7)*(AE$1:AE$500=H7)*(AG$1:AG$500)*(P7="×"))} このY列・Z列・AA列・AB列・AC列・AE列・AG列は、ぞれぞれ200行くらいしか 文字が入力されていない場合には、配列関数の結果がうまく表示されました。 これらのセルの200行以降から300行・400行と項目を増やしていったところ、 配列関数の結果がうまく表示されないセルが出てきました。 これは、配列関数の参照するセルに制限があるということでしょうか?

専門家に質問してみよう