Excel: 条件付き範囲内の一意の行の数をカウントする

Excel: 条件付き範囲内の一意の行の数をカウントする

次の Excel シートがあります:

  • 列A: 週番号
  • 列B: 日付(タイムシートエントリ)

各週の労働日数を知る必要があります。そのため、週番号ごとの一意の日付エントリの数が必要です。

固定範囲でこれを処理する数式 (配列と非配列の両方) を見つけましたが、結果を別の列 (週番号ごと) に表示したいと思います。

以下のサンプル データセットの結果は次のようになります (コロンはわかりやすくするためのものです)。

14: 2 
15: 3 
17: 6 
20: 2 
21: 3 

これがソースデータの場合:

14: 4/04/2012
14: 4/04/2012
15: 10/04/2012
15: 10/04/2012
15: 11/04/2012
17: 26/04/2012
17: 26/04/2012
17: 26/04/2012
17: 26/04/2012
17: 27/04/2012
17: 27/04/2012
20: 14/05/2012
20: 14/05/2012
21: 23/05/2012
21: 23/05/2012
21: 25/05/2012

答え1

エントリの数をカウントするには、=countif(A:B,D1)週番号がセル D1 にあり、エントリのリストが列 A と B にあると仮定して、を使用します。

もう 1 つのオプションは、週番号を行ラベルとして、エントリ数をデータとしてピボット テーブルを作成することです。これにより、すばやく更新できる適切な概要が得られます。

答え2

数式だけですべて実行できます。間接的なアドレス指定が少し必要で、元のデータに沿って 1 つの (わかりやすくするために 2 つにします) 別々の作業列と、結果テーブルに 3 つの追加列が必要です。

実際のデータは、いくつかのヘッダーを可能にするために 3 行目から始まると想定します。;引数の分離に を使用しますが、これは米国ロケールのデフォルトではありません。日付がソートされているとは思わないこの仮定のもとでは、解決策はより簡単になります。

  1. セル H2 (入力行数):=COUNT(A3:A1048576)
  2. セル C3 (動的検索範囲): なし
  3. 細胞C4:C1000:=ADDRESS(ROW(A$3);COLUMN(A$3)) & ":" & ADDRESS(ROW(A3);COLUMN(A3))
  4. セル D3 (一意):TRUE
  5. セルD4:D1000:=COUNTIF(INDIRECT(C4);A4)=0
  6. セル E3 (一意のエントリの番号):1
  7. セル E4:E1000:=IF(D4;E3+1;E3)
  8. セル I2 (見つかったユニーク数):=OFFSET(E3;H2-1;0)
  9. セル J2 (曜日範囲):=ADDRESS(ROW(A3);COLUMN(A3);4) & ":" & ADDRESS(ROW(A3)-1+$H$2;COLUMN(A3);4)
  10. セル K2 (固有の曜日範囲の数):=ADDRESS(ROW(E3);COLUMN(E3);4) & ":" & ADDRESS(ROW(E3)-1+$H$2;COLUMN(E3);4)
  11. セル H5 (カウンター):1
  12. セル H6:H100=H5+1
  13. セル I5:I100 (位置):=MATCH(H5;INDIRECT($K$2);0)
  14. セル J5:J100 (曜日):=OFFSET($A$3;I5-1;0)
  15. セル K5:K100 (カウント):=COUNTIF(INDIRECT($J$2);J5)

最終結果は K5:K100 の範囲になります。

間接的な数式を使用していますが、任意の場所に列を挿入するか、列 F:F または G:G を削除しても、このソリューションは機能します。データのある列を一緒に保つ限り、セルを移動することもできます。

すべてを 1 つのワークシートに保持することが重要です。テーブル H4:K100 を別のワークシートに移動する必要がある場合は、セル J2 と K2 のアドレスを変更してワークシート名を含める必要があります。

ここに画像の説明を入力してください

答え3

ピボットテーブルは最も簡単かもしれません

例

関連情報