web-dev-qa-db-ja.com

COUNTIFは、空白以外の数式の結果をカウントできませんか?

数式の空白以外の結果を識別する=countif(range_of_formulas, [criterion])で使用する基準を探しています。 "<>""<>"&"""<>"""">""""*"など、かなりの数が見つかりました(例:SO ここ および ここ )。しかし、各基準は特定の状況でのみ機能し、他の状況では機能しないようであり、すべて次の状況ではfail

enter image description here列AとBには元のデータがあります。列Dは、列Cに表示される数式の結果を示しています。列Fは、さまざまな基準(列Eに示されている)を使用して列Dの空白以外の結果をカウントしたcountifの結果を示しています。正しいカウント-5。

私の調査では(そしてこの質問への回答では、編集して絞り込む前に)、適切な数を取得するための多くの回避策を見てきました。しかし、私が求めているのは、countifで機能する基準があるかどうか、またはcountifが空白以外の数式の結果を確実にカウントできないかどうかです
(または、どのような条件下で使用できるか、使用できないかを誰かが言うことができるかもしれません)。

8
eli-k

これは、最初のフォーラムで出力を文字列値にする簡単な変更で実現できます(数値結果を使用して計算を実行する必要がある場合は、1を掛けて変換し直しますそれらが使用されているときに番号を付ける)

最初の数式の結果の最後に空白の文字列を結合し、Excelを満足させるために角かっこで囲んだだけです。

=(IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"")&"")

これで、任意の文字(_?_)と任意の長さの文字列(_*_)のワイルドカードを基準として使用して、目的の合計5を達成できます。

=COUNTIF($D$1:$D$8,"?*")

enter image description here

6
Glitch_Doctor

すでに述べたように、直接助けなしではありません。そう;

これを適応させるためのおそらく最も簡単な方法は次のとおりです。

=SUM(COUNTIF($D$1:$D$8,{">0",""}))

または

=SUM(COUNTIFS($D$1:$D$8,{">0",""}))

それに応じて追加し、結果を出します。このCOUNTIFSの使用方法とあなたのCOUNTIFSの使用方法および{}の配置の違いに注意してください。

実行元: https://exceljet.net/formula/countifs-with-multiple-criteria-and-or-logic

ORロジックを使用して複数の基準に基づいてカウントするには、配列定数とともにCOUNTIFS関数を使用できます。デフォルトでは、COUNTIFS関数はANDロジックを適用します。複数の条件を指定する場合、カウントを生成するにはすべての条件が一致する必要があります.1つの解決策は、配列定数で複数の基準を指定することです...

4
ReturnVoid

いいえ、それは不可能です。 COUNTIFは、通常のExcel数式の比較とは異なる解釈を使用して条件を解析します。

二重引用符で囲むと、開始時の比較演算子を解析できます:=、>、> =、<=、<、<>

その後、すべてが数字または文字列になります。数値として解析できないものはすべて、文字列として解析されます。次に、数値か文字列かに基づいて比較が実行されます。

数値比較は文字列を無視し、文字列比較は数値を無視します。

"> 3"は、3より大きいすべての数値をカウントします。すべての文字列を無視します。

"> c"は、cより大きいすべての文字列をカウントします(つまり、cで始まり、その後に別の文字が続くもの、またはより高い文字コードで始まるもの)。すべての数値を無視します。

"> 3 *"は、文字3より大きいすべての文字列をカウントします。

">" ""を実行しようとすると、 ""は "文字を示すために使用されます(数式では二重引用符で囲まれているため)。したがって、ここで実際に行っている比較は次のとおりです。"文字より大きいすべて。 Unicodeチャートをプルアップすると、それだけが表示されます。は "未満です。したがって、!の後に何かを入力するか、データの場合は"を単独で入力すると、カウントが1つ少なくなります。

同様に、 ">" "" ""は、null文字列ではなく、2つの二重引用符で構成される文字列と比較するだけです。

Null文字列をCOUNTIF関数に渡すことはできません。

次のいずれかの別の解決策が必要になります。

  1. 以前のIFステートメントを変更して、COUNTIFステートメントでテストできるnullstring以外の値を返します。 CHAR(1)を使用して、空白に見えるがCOUNTIFで除外できる印刷不可能な文字を表示することもできます。=COUNTIF(D1:D8,"<>"&CHAR(1))

  2. 文字列の数と数値の数をカウントする複数のCOUNTIFを使用します。=COUNTIF(D1:D8,"?*")+COUNTIF(D1:D8,">0")(> 0は、正の数値のみがあると想定して使用されます。それ以外の場合は、<=である数値のカウントも追加する必要があります。 0)

  3. 他のユーザーの提案に従って他の機能を使用する

4
Michael

それはあなたがあなたの式をどのように書くかに依存します。

以下のようにIf()式を変更し、前述のようにCountifを使用すると、正しい答えが得られます。

=IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"|^|")

=COUNTIF(C1:C8,"<>|^|")

または

If()式を変更できない場合は、正しい結果を得るには、Countif()をSumproduct()に変更する必要があります。

=IF(AND(B1=1,ISBLANK(A1)=FALSE),A1,"")

=SUMPRODUCT(--(TRIM($C$1:$C$8)<>""))
1
Sixthsense

COUNTIFSの例、

=COUNTIFS(A1:A8, "<>", B1:B8, 1)

別のSUMPRODUCTの例、

=sumproduct(sign(len(d1:d10)))
1
user4039065

これは機能するはずです:

=(COUNTA(range) - COUNTBLANK(range))

COUNTA-内容のあるすべてのセルをカウントします

COUNTBLANK-空白と評価されているすべてのセルをカウントします

ただし、内容のないセルには注意してください。COUNTBLANKは増加しますが、COUNTAは増加せず、計算が失敗します。

1
Eleshar

空白の結果も返す数式がある場合は、これを試して空白以外の戻り値をカウントしてください。配列で動作します。

=SUMPRODUCT(N(LEN(A1:A10)>1))
0
Lovro S