セルの範囲でCOUNTIF(または同様のもの)を実行する数式を探しています。含まれている値が日付の場合、カウンターをインクリメントします。基本的には次のようになります。
=COUNTIF(range, if_date())
私が見つけられなかったのは、質問のif_date()部分の論理テストです。セルをテストして、その内容が日付であるかどうかを確認する方法はありますか?
セルの範囲でCOUNTIF(または同様のもの)を実行する数式を探しています。含まれている値が日付の場合、カウンターをインクリメントします。基本的には次のようになります。
=COUNTIF(range, if_date())
私が見つけられなかったのは、質問のif_date()部分の論理テストです。セルをテストして、その内容が日付であるかどうかを確認する方法はありますか?
Excelの日付は単純にフォーマットされた数値であるため、これはワークシート関数では困難です。関数のみCELL
でセルのフォーマットを調査できます(範囲に適用できないため、ヘルパー列が必要になります)。 ..または、日付と空白だけがある場合.....または日付とテキストがある場合は、COUNT
関数を使用するだけで十分です。
=COUNT(range)
これは数値をカウントするため、日付と数値を区別する場合は適切ではありません。その場合、番号範囲を利用できます。たとえば、範囲と日付に番号があり、番号がすべて10,000未満で、日付がすべて比較的新しい場合は、このバージョンを使用して番号を除外できます。
=COUNTIF(range,">10000")
これが私の解決策です。セルに日付または空白のみが含まれる場合は、別の日付と比較してください。セルを日付に変換できる場合は、カウントされます。
=COUNTIF(C:C,">1/1/1900")
## Counts all the dates in column C
注意、数字のあるセルはカウントされます。
これが1つのアプローチです。上記の回答を組み合わせて使用すると、次のようになります。
式として、以下の例を使用し、<>を範囲参照に置き換えます。
=SUM(IF(ISERROR(DATEVALUE(TEXT(<<RANGE HERE>>, "MM/dd/yyyy"))), 0, 1))
これは、CTRL + SHIFT+ENTERを使用して配列数式として入力する必要があります。
これは、潜在的な日付値の列が列Aにあることを前提としています。隣接する列で次のようなことを行うことができます。
「日付」が有効な場合は数値に変換し、有効でない場合はエラー値をゼロに変換するネストされた数式を作成します。
次に、有効な数値を1に変換し、ゼロをそのままにします。
次に、新しい列を合計して、有効な日付の総数を取得します。
= IF(IFERROR(DATEVALUE(A1)、0)> 0,1,0)
単一のテスト(等しい、より大きい、より小さい、より大きいか等しい、または等しいなど)を満たす数値または日付をカウントするには、COUNTIF関数を使用します。Excel 2007以降では、範囲内(9000より大きく同時に22500未満など)の数値または日付をカウントするために、COUNTIFS関数を使用できます。Excel 2003以前を使用している場合は、SUMPRODUCT関数を使用して、範囲内の数値をカウントできます(COUNTIFSはExcel 2007で導入されました)。
もっと見てください
上記のCELLのように、一部の関数はベクトルに対応していないため、 Excelにはインタラクティブなソリューションはありません。たとえば、 ABSは数式配列内で受け入れられるため、絶対値が3未満のすべての数値をカウントすることができます。
したがって、次の配列数式を使用しました(中括弧なしで編集した後、Ctrl + Shift + Enter )
={SUM(IF(ABS(F1:F15)<3,1,0))}
列Fに
F
1 ... 2
2 .... 4
3 .... -2
4 .... 1
5 ..... 5
それは3を数えます!(-2、2および1)。ABSがどのように配列に適した機能であるかを示すために、簡単なテストを行いましょう。数式バーでG1:G5、digit = ABS(F1:F5)を選択し、 Ctrl + Shift+Enterを押します。誰かがAbs(F1:F5)(1)、Abs(F1:F5)(2)などを書くようなものです。
F G
1 ... 2 =ABS(F1:F5) => 2
2 .... 4 =ABS(F1:F5) => 4
3 .... -2 =ABS(F1:F5) => 2
4 .... 1 =ABS(F1:F5) => 1
5 ..... 5 =ABS(F1:F5) => 5
ここで、2つの日付値を含むいくつかの混合データを配置します。
F
1 ... Fab-25-2012
2 .... 4
3 .... May-5-2013
4 .... Ball
5 ..... 5
この場合、CELLは失敗し、1を返します。
={SUM(IF(CELL("format",F1:F15)="D4",1,0))}
これは、 CELLが範囲の最初のセルの形式を返すために発生します。(D4はmdy形式です)
ですから、残っているのはプログラミングだけです!式配列のUDF(ユーザー定義関数)は、バリアント配列を返す必要があります。
Function TypeCell(R As Range) As Variant
Dim V() As Variant
Dim Cel As Range
Dim I As Integer
Application.Volatile '// For revaluation in interactive environment
ReDim V(R.Cells.Count - 1) As Variant
I = 0
For Each Cel In R
V(I) = VarType(Cel) '// Output array has the same size of input range.
I = I + 1
Next Cel
TypeCell = V
End Function
今は簡単です(定数VbDateは7です):
=SUM(IF(TypeCell(F1:F5)=7,1,0))
それは2を示しています。その技術は、あらゆる形状の細胞に使用できます。関数内の各注文にを使用して入力するため、垂直、水平、および長方形の形状をテストしまし た。
少し長めですが、私にとってはうまくいきます:これを試してください::
=SUM(IF(OR(ISBLANK(AU2), NOT(ISERR(YEAR(AU2)))),0,1)
+IF(OR(ISBLANK(AV2), NOT(ISERR(YEAR(AV2)))),0,1))
ifの最初の部分では、セルを空白にするか、セルに何かがある場合は年に変換しようとします。エラーがある場合、または日付の結果= 1以外の場合は、各セルに対して同じことを行い、結果を合計する
これが、Excelをだまして、期限切れの証明書をリストにカウントする方法です。日付や日付範囲は設定されていませんでした。現在の日付だけです。「TODAY()」は、Excel 2013の場合は機能しません。日付値ではなく、テキストまたは条件として表示されます。したがって、これらの以前は私にはうまくいきませんでした。それで、文章題/シナリオ:このリストで何人の人が期限切れになっていますか?
使用:= IFERROR(D5-TODAY()、0)ここで、D5は問い合わせられる日付です。
次に、次を使用します。= IF(J5> = 1,1,0)ここで、J5は、最初の方程式が正または負の数を生成しているセルです。このセットは、表示されているシートの側面に隠してあり、有効期限が切れていないメンバーの数の合計を合計するだけです。
範囲内のセルの総数から同じ範囲の空白セルを引いた数。
=(115-(COUNTBLANK(C2:C116)))
これは範囲内のすべてをカウントするので、おそらくあなたが探しているものではありません。