Johnは、コスト追跡システムで使用されるレコードを含むワークシートを持っています。レコード番号は列Aに、場所は列Bに、コストは列Cに入力されます。すべてのレコードのコスト値が列Cに入力されるわけではありません。ジョンは「場所Xおよびコスト<> 0」のレコードの数を決定したいと考えています。

最初の衝動は、CountIfなどのカウント用に設計されたワークシート関数の1つを使用することかもしれません。唯一の問題は、CountIfでは、解を計算するときに2つの条件をチェックできないことです。ただし、列を追加したり中間計算を行ったりすることなく、使用できるソリューションがいくつかあります。

最初の(そしておそらく最も単純な)解決策は、SUMPRODUCTワークシート関数を使用することです。この関数を使用すると、列、行、または配列のデータを、必要な数の基準でカウントまたは合計できます。基本的な構文は次のとおりです。

=SUMPRODUCT( (CONDITION1)  (CONDITION2)  (CONDITION3) * (DATACELLS) )

この特定の例では、次のように式をまとめることができます。

=SUMPRODUCT((B2:B101="X")*(C2:C101>0))

これは、チェックされる2つの異なる条件を提供します。

最初に、列Bのセルが「X」に等しいかどうかがチェックされ、次に列Cの対応するセルが0に等しいかどうかがチェックされます。どちらの条件もTrue(1)またはFalse(0)を返します。次に、これらの結果が互いに乗算され、1または0になります。次に、SUMPRODUCT関数がそれらを加算して、累積カウントになります。

別の解決策は、計算を行う配列数式を作成することです。配列数式は、通常の数式とは異なり、多数のセルで機能し、それらを反復処理して結果を生成します。次の式を考えてみましょう:

=(B2="X")*(C2>0)

これにより、1または0のいずれかの単一の値が返されます。この式は、SUMPRODUCTソリューションの前の説明で説明したものと同じ基本ロジックを使用します。 2つの論理比較は、1または0を返します。これらは互いに乗算され、結果として1または0になります。ここで、次の式について考えてみます。

=SUM((B2:B101="X")*(C2:C101>0))

これは以前のSUMPRODUCT数式と非常によく似ていますが、ストレート数式としては正しく機能しません。これは、SUMがセルの範囲で反復的に機能するように設計されていないためです。この数式を配列数式として入力すると(Shift + Ctrl + Enterを押して入力)、Excelは、各範囲を順番に処理して、最終的な合計を計算することを認識します。これは、レコードの数です。記載された基準を満たします。

配列数式を使用するさまざまな方法は、非常に幅広いトピックです。

配列数式のしくみの詳細については、_WordTips、_の他の問題を参照するか、次のWebサイトを参照してください。

http://www.cpearson.com/excel/ArrayFormulas.aspx

3番目のオプションは、データベースワークシート関数を使用してカウントを返すことです。これらを使用して、ワークシートに「基準テーブル」を設定すると、関数は基準を使用してレコードを分析します。次の手順では、3つの列の列ラベルがRecNum、Location、およびCostであると想定しています。

。レコードと同じワークシートまたは別のワークシートで、空のセルをいくつか見つけます。 (この例では、列JとKを使用していると仮定します。)

。セルJ1に、場所という単語を入力します。

。セルK1に、Costという単語を入力します。

。セルJ2にXと入力します。

。セルK2に、> 0と入力します。これで、セルJ1:K2に基準テーブルが入力されました。

。セルJ1:K2を選択します。

。 「挿入」メニューから「名前」を選択してから、「定義」を選択します。 Excelに[名前の定義]ダイアログボックスが表示されます。 (図1を参照)

。 Criteriaという名前を入力し、[OK]をクリックします。

。基準を満たすレコードの数が必要なセルに、次のように入力します。

=DCOUNT(B1:C101,2,Criteria)

DCOUNTで使用される最初の引数は、レコードリストの2番目と3番目の列であることに注意してください。この引数には、DCOUNTが基準テーブル(3番目の引数)から適切な基準の一致を見つけるために必要な列ラベルも含まれています。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2815)は、Microsoft Excel 97、2000、2002、および2003に適用されます。