• ベストアンサー

Excel関数のCOUNTIFで、正しくカントされない!?

Excelで、 (Aシート)     A   B   C   去年  今年  差    3  50.5  51.7  1.2 4  70.3  71.5  1.2 5  63.0  60.2  -2.8 ・・・・・・・ (差は『今年』―『去年』で計算式で出しています) 上記のようなデータから、Bシートに、差を    A    2 -2.9  0 ←=COUNTIF('Aシート'!C3:C50,A2) 3 -2.8  1 ←=COUNTIF('Aシート'!C3:C50,A3) 4 -2.7  0 ・・・・・ 5 1.1  0 6 1.2  2 7 1.3  0 のようにそれぞれの差にあたる数をカウントしたいので 上記のようにCOUNTIFを使ったのですが なぜかカウントされないものと、カウントされるものがあるのです。 無知な私に解決方法を教えて頂ければと思います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 これは、なかなか難しい問題ですね。Excel自身の問題だと思います。(開発時代の頃とPCのスペックも違うのですから、マイクロソフト側で直してほしいなって思います。) 整数にすれば問題はないのですが、小数点ですから、見かけでは、どこに誤差が出ているのか分かりません。 誤差が、Aシートにも、Bシートにも存在します。 単純に、数式で解決するには、COUNTIF ではなくて、FREQUENCY 関数を使います。 ただし、 Aシート 63.0  60.2  -2.8 ○ Bシート 3: -2.8  1 ○ Aシート○とBシート○とは同じとは限りません。区間の中でカウントする必要があります。 Bシート A 列 2: -3.1 (ずらすために、ダミーで、-3.1 から書きます) 3: -3.0 4: -2.9  ←ただし、そのままオートフィルを使うと誤差が生じてしまいます。  ・  ・  ・ 53: 2.0 例えば、これを、=ROUNDUP(A2,1) として、誤差を切り上げしてあげるか、または、手入力するなどしなくてはいけません。 次に B2~ =FREQUENCY(シートA!C3:C50,シートB!A2:A53) B53 まで、範囲を伸ばして、F2を押して、B2がアクティブセルということを確認したら、[Ctrl + Shift + Enter] を押し、配列確定をします。 ----------------- 第二案としては、 50.5  51.7  1.2 この数式で、= ROUNDUP(B2 - A2, 1) として、丸めてしまうという方法が考えられます。

earlyplant
質問者

補足

ありがとうございます。 ROUNDUP ですべてのデータがカウントされました。 ありがとうございました。 ただ、このROUNDUPにより、誤差が直されたため(?)か、 見た目上は 50.5と51.7の差は1.2ですが ところどころ1.3のように、0.1のずれが生じるところがあります。 これは仕方ないことでしょうか? 重ねて質問して申し訳ございません。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >ただ、このROUNDUPにより、誤差が直されたため(?)か、 >見た目上は 50.5と51.7の差は1.2ですが >ところどころ1.3のように、0.1のずれが生じるところがあります。 調べてみました。すみません、久々で、私は、間違えました。 >これを、=ROUNDUP(A2,1) × ROUNDUP を、ROUNDに直してみていただけませんか? >ところどころ1.3のように、0.1のずれが生じるところがあります。 51.7 -50.5 1.300000000000000 (小数点15位まで) は、きれいに、0が並んでいます。ところが、0が、並んでいないところがあります。 50.1 - 50.4 0.299999999999997 これは、0.3 になりますが、 50.1 - 50.2 0.100000000000001 この場合、0.1 違って、0.2 になってしまいますね。 他に、古い専用の関数に、FIXED という関数があります。 =FIXED(A2,1)*1 このような使い方をします。

earlyplant
質問者

お礼

すべて解決しました!! 本当に困っていたので助かりました。 ありがとうございましたm(_ _)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! Sheet2のB1セルに数式を入力してそのまま下へコピーされているのだと思いますので、 C3~C50を絶対参照にすればOKではないでしょうか? B2=COUNTIF('Aシート'!$C$3:$C$50,A2) でオートフィル! もし間違っていたらごめんなさい。m(__)m

earlyplant
質問者

お礼

ありがとうございます。 質問文のまちがいなのですが、 COUNTIF('Aシート'!C3:C50,A2) ではなくて COUNTIF('Aシート'!$C$3:$C$50,A2) としていますが、 ダメだったのです…。 すみません。中途半端な文章で申し訳ないです。