配列数式について

SUMIF関数は、参照先のブックを閉じると#VALUEになってしまいますよね? そうならない為には配列数式を使用すれば良...

kkkkkm さんからの 回答

  • 2019/11/08 14:58
  • 回答No.2
kkkkkm

ベストアンサー率 55% (655/1190)

Excel(エクセル) カテゴリマスター
単にEnterだと(CTRL+SHIFT+Enterじゃないと)配列数式にならない({}が自動で付かない)ので計算が正しく行われません。
この回答にこう思った!同じようなことあった!感想や体験を書こう!
この回答にはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
  • 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で試したんですがダメでした〇| ̄|_これを解決する方法はないんでしょうか? みなさんの知恵をお貸しください。よろしくお願い致します。...

  • vbaの速度向上(sumif関数) Visual Basic

    エクセルvbaの速度を向上できないか、お知恵を貸していただきたく存じます。 以下のvba(sumif関数)をもっと速めたいです。何とかできないでしょうか。長い記載となり申し訳ないのですが、何卒よろしくお願い申し上げます。 myCnt7 = 2 Do Worksheets("●").Cells(myCnt7, 4).Value = WorksheetFunction.SumIf(Worksheets("◆").Range("B:R"), Worksheets("●").Cells(myCnt7, 3), Worksheets("◆").Range("R:R")) - WorksheetFunction.SumIf(Worksheets("★").Range("B:C"), Worksheets("●").Cells(myCnt7, 3), Worksheets("★").Range("C:C")) Worksheets("●").Cells(myCnt7, 7).Value = WorksheetFunction.SumIf(Worksheets("◆").Range("B:R"), Worksheets("●").Cells(myCnt7, 6), Worksheets("◆").Range("R:R")) - WorksheetFunction.SumIf(Worksheets("★").Range("B:C"), Worksheets("●").Cells(myCnt7, 6), Worksheets("★").Range("C:C")) Worksheets("●").Cells(myCnt7, 10).Value = WorksheetFunction.SumIf(Worksheets("◆").Range("B:R"), Worksheets("●").Cells(myCnt7, 9), Worksheets("◆").Range("R:R")) - WorksheetFunction.SumIf(Worksheets("★").Range("B:C"), Worksheets("●").Cells(myCnt7, 9), Worksheets("★").Range("C:C")) Loop While myCnt7 > 201 ※シート●のC列から3列ごとに、Sumifの検索条件があります。 ※シート●のD列から4列ごとに、Sumifの計算結果を出力させます。 ※計算対象シートは、シート◆とシート★の2つです。  シート◆のSumif合計から、シート★のSumif合計を差し引いています。  Sumifの条件自体は、どちらのシートも同じ(シート●)。 ※上記のSumif関数の記述は、3つですが、実際の記述は24あります。 ※すなわち、検索条件の組み合わせが24あり、201行分をmyCnt7でLoopさせて実行しています。...

  • SUMIF関数(整数のみ)で計算が合いません オフィス系ソフト

    H列は、受注金額の小計を表示してます。 小計は、D列(注文数量)とG列(金額)の積なので、 H列には、「D*G」の数式が入っています。 H2:H5000が作業用のセルですが、H5000まで件数が無い場合は、 「#N/A」のエラーが表示されるので、通常のSUMでは合計を出せないため、下記の数式を利用しています。 =SUMIF(H2:H5000,">=0",H2:H5000) 合計が合う場合と、1件だけ多くなる場合がありますが、 この原因が全く分かりません。 お分かりになる方がいらっしゃいましたらお教えいただけると幸いです。 EXCEL2000です。よろしくお願いします。...

  • SUMIF関数【複数のシートの検索範囲にするには】 オフィス系ソフト

    初めて質問します。 エクセルのSUMIF関数で、範囲と合計範囲を、複数のシートにまたがってを選択したいのですが、上手くいきません。 それぞれのシートの作り(行・列の数、表示形式など)は同じです。また選択する範囲も同じです。 目的は特定のクライアントの期間別の合計売上を算出することです。 シートごとに月単位の売上が記録してあり、検索条件にクライアント名を入力すれば、さかのぼった一定期間の売上が算出できるようにしたいのです。 SUMIF関数入力に従っていくと、【範囲】shiftを押しながらシートを選び、シート状の範囲を選択、【検索条件】、【合計範囲】shiftを押しながらシートを選び、シート状の範囲を選択、となります。 具体的な数式としては、 =SUMIF('3月売上:1月売上'!B2:B100,'0805'!$H$20,'3月売上:1月売上'!E2:E100) となりますが、エラーになってしまいます。いろいろ試したのですが、上手くいきません。どなたかお力添えをお願いしまう。 ※今回は連続する数ヶ月の範囲でしたので、シートを:でつないだもので問題ないのですが、もし任意の複数シートを選ぶ場合についても、教えていただければ幸いです。ctrlではダメでした。...

  • 配列数式の怪 その他MS Office製品

    お世話になります。 配列数式の入力方法にて解せない部分がありましたのでご教示願います。 ソフトウェア開発の工数見積をしようと思って、Excel2003で添付の様な WBSを作りました。 ここで、機能1~3を実装するか否かをD2~F2に○で指定し、 各機能毎に必要な作業項目をD3~F6でマッピングしました。 ※5は作業対象の工数合計で、 =SUMIF(C3:C6,"○",B3:B6) になっています。 (実際には、機能、作業項目共に数十項目のマトリクスになってます) 各作業項目1~4が見積対象になるかどうかを実装する機能に従って 表示しようと思って、C3~C6に配列数式を使って ※1:{=IF(SUM(($D$2:$F$2="○")*(D3:F3="○"))>0,"○","")} ※2:{=IF(SUM(($D$2:$F$2="○")*(D4:F4="○"))>0,"○","")} ※3:{=IF(SUM(($D$2:$F$2="○")*(D5:F5="○"))>0,"○","")} ※4:{=IF(SUM(($D$2:$F$2="○")*(D6:F6="○"))>0,"○","")} と入力しようと思いましたが、どう入力しても下記の様に行番号を可変に したいところが全て同じ行番号になってしまいます。(D3:F3) ※1:{=IF(SUM(($D$2:$F$2="○")*(D3:F3="○"))>0,"○","")} ※2:{=IF(SUM(($D$2:$F$2="○")*(D3:F3="○"))>0,"○","")} ※3:{=IF(SUM(($D$2:$F$2="○")*(D3:F3="○"))>0,"○","")} ※4:{=IF(SUM(($D$2:$F$2="○")*(D3:F3="○"))>0,"○","")} ここで、例えば※2のD3:F3だけをD4:F4に変えても他の行も全てD4:F4に 変わってしまいます。 いろいろと試行錯誤した結果、一旦全て削除してまっさらな状態から ※1に{=IF(SUM(($D$2:$F$2="○")*(D3:F3="○"))>0,"○","")} を入力した後に1行開けて※3にコピーしたところ、無事に D3:F3がD5:F5に変わりました。 そこで、その後に ※2に{=IF(SUM(($D$2:$F$2="○")*(D4:F4="○"))>0,"○","")} を入力した後に※4にコピーして目的を達成できました。 (実際には、奇数行、偶数行でそれぞれ数十行ずつのコピーをしました) これは、配列数式入力時の仕様なのでしょうか? また、本来はどの様に入力するのが正解なのでしょうか?...

ページ先頭へ