web-dev-qa-db-ja.com

ExcelでCOUNTIFを使用して、値の配列内の「より大きい」値の数をカウントします

これが私の状況です。私は、教師が評価で生徒の成長を追跡するために使用するトラッカーを作成する校長です。現在のトラッカーでは、次のように設定されています。

            % of            67%
            Students Met

**Student Name    Week 1 Goal:         Week 1 Actual:        Goal Met?:**
  Example A       23                    32                    Y
  Example B       45                    44                    N
  Example C       53                    55                    Y

「ゴールメット?」の式を使います。実績が目標列を満たしているか超えているかに応じて、YまたはNを配置する列。次に、別の数式を使用して、[目標の達成]列で「Y」のCOUNTIFを実行し、それをその列のCOUNTAで除算し、100を掛けて、達成した学生の割合を決定します。

私が疑問に思っているのは...これは教師にとって非常に面倒であり、列と数式を多く入れるほど、教師が間違った場所に入力して数式を台無しにするリスクが高くなります...方法はありますか週次目標列と週次実績列の配列のCOUNTIFを実行し、実績が目標以上である行のみをカウントできますか? COUNTIF(E5:F17、F> = E)を実行し、ある種のシンボルをEとFの変数として基準に入れて、行ごとに値を比較し、カウントする方法があります。 F値がE値よりも大きいもの?

「GoalMet」列を削除できるので、どんな提案でも素晴らしいでしょう(彼らは常に入力し、毎週戻って修正する必要があります)。大規模なトラッカーの3列ごとに保護する必要があるのは面倒です!

アドバイスありがとうございます!

ブレンダン

2
Brendan

変更したくないセルは常にパスワードで保護する必要があります。

質問に答えるには、配列数式を入力する必要があります。列名がA3から始まると仮定して、次のように入力し、 Ctrl+Shift+Enter

=SUM(IF(C4:C6>=B4:B6,1,0))/COUNT(C4:C6)

正しく実行すると、数式全体の周りに中括弧が表示されます。

={SUM(IF(C4:C6>=B4:B6,1,0))/COUNT(C4:C6)}
2
wbeard52

別の「配列数式」アプローチは次のようなものです。

=AVERAGE(IF(E5:E17<>"",IF(F5:F17>=E5:E17,1,0)))

で確認 CTRL+SHIFT+ENTER

これにより、0.5のような実際の%が得られます-50を100で乗算する場合

0
barry houdini

私の解決策

セル参照が適切に調整された次の配列数式は、探していることを実行するはずです。

=SUM(1*((OFFSET(C2,0,0,COUNT(C:C),1)-OFFSET(B2,0,0,COUNT(C:C),1))>=0))/COUNT(C:C)

例:

Excel snip

最初のOFFSETC2参照を「実際の」データの一番上のセルに設定します(F5、あなたの例では)、B22番目のOFFSETの一番上のセルへの参照'Goal'データ(E5in yours)の、そしてすべてのC:C「実際の」または「目標」データのいずれかを含む列への参照(E:EまたはF:Fあなたの)。 必ず選択した列に数値データがあるセルのみがC:C参照は、「実際」または「目標」の値が含まれるセルです。そうでない場合、数式は不正確な結果を返すか、完全に失敗します。

数式を配列数式として入力するには、数式を適切に入力してから、EnterキーだけでなくCtrl-Shift-Enterキーを押します。 (配列数式の詳細については ここ を参照するか、オンラインで「Excel配列数式」を検索してください。)いつでもあなた数式に変更を加えると、正しく動作するために、常にCtrl-Shift-Enterを使用して数式を入力する必要があります。

仕組み

  • COUNTは、存在するデータの行数を取得します。
  • 2つのOFFSET呼び出しは、関心のある2つの配列、「実際」と「目標」のスコアを取得します。各呼び出しで:
    • 最初の引数は、配列の左上のセルをマークします。
    • 2番目と3番目の引数は、それぞれ行と列のオフセットです(ここでは両方ともゼロです)。
    • 4番目の引数は、配列に含める行数を示します。そして
    • 5番目の引数は、含める列の数を示します。
  • これは配列数式であるため、「実際の」配列と「目標」配列を減算すると、同じサイズの配列が返されますが、それらの間の要素ごとの違いが含まれます。
  • >=0比較は、差異の配列を、目標が達成されたかどうかを示すTRUE/FALSE値の配列に変換します。
  • 1*は、ブール値TRUEFALSEの値を数値の10に変換し、SUM関数でカウントアップするためにあります。
    • Excelでは、TRUEFALSEは暗黙的に1と0の数値を保持します。
    • ただし、TRUE/FALSE値を含む範囲または配列をSUMなどの関数に渡そうとすると、TRUE値は無視され、ゼロが返されます。 。
    • したがって、TRUE/FALSE配列全体に1を掛けることは、Excelをだまして配列を便利な方法で解釈させる方法です。
  • SUMCOUNTで割ると、設定された目標を達成する学生の望ましい割合になります。

[〜#〜] edit [〜#〜]:wbeard52の回答によると、Excel2010以降では1*...ハックをIF構造。古いバージョンのExcelでは、IFが配列入力を誤って処理していました。

0
hBy2Py

配列数式オプションの別のカップル、あなたは押す必要があります Ctrl+Shift+Enter それらをコミットします。

達成された目標の数を見つけるには:

=SUM(--(C4:C6>B4:B6))

達成された目標のパーセンテージを見つけるには:

=SUM(--(C4:C6>B4:B6))/count(C4:C6)

単独で使用できます。を押して、配列数式として入力することを忘れないでください Ctrl+Shift+Enter

0
Levi