1

Microsoft Excel で、同じテーブルの別の列の値に基づいて範囲 (列の一部) を計算し、結果を配列形式で返して、他の関数でさらに処理するにはどうすればよいですか?

SQL では、「SELECT フィールド 1 FROM テーブル WHERE フィールド 2 = 値」という意味です。

選択された結果は FREQUENCY() に (2 回) 送られ、"field1" の個別のエントリ数が計算されます。つまり、次のような既存のテーブルがあるとします。

Box          Date
1            07/01/12
13           07/01/12
13           07/01/12
27           07/18/12
13           07/18/12
55           07/18/12

次のような結果のテーブルを作成したい:

Boxes      Date
2          07/01/12
3          07/18/12

「13」は最初の日付で 1 回だけカウントされますが (「個別」)、2 番目の日付でも再度カウントされることに注意してください。

テーブル全体に対して適切な処理を行う式が既にあります。

=SUM(N(FREQUENCY(Box,Box)>0))

ここで、"Box" は最初のテーブルの名前付き範囲で、Box 列全体で構成されます。(FREQUENCY のデータおよびビンと同じ範囲/配列/リストを使用することは、実際には Excel ヘルプに含まれている驚くほど巧妙なトリックですが、残念ながら、十分に説明されていません。)

しかし、日付ごとに 1 つずつ、(いくつかの) サブセットが必要です。"SUM(N(FREQUENCY…") 式を拡張して、日付列が計算対象の行の日付列と一致する最初のテーブルの行にのみ作用するようにします。つまり、再び SQL に頼って、

SELECT count(DISTINCT t1.Box), t2.Date
FROM `t1` JOIN `t2` ON (Date)
GROUP BY Date

興味深い値のピボット テーブルを作成することもできます (これにより、セルのカウントが取得されます)。次に、日付インデックス付きの並列列を使用します

=COUNTIF(…)

カウントの各行を、その日付の一意の単一カウントに減らします。ただし、これには、ピボット テーブルを更新してベース テーブルの新しいデータを認識し、回答の列をドラッグして展開して新しい日付を含める必要があります (または、見苦しい値のエラー マーカーが表示されます)。したがって、より自動化された、手間のかかる手動ではないものが最適です。

4

1 に答える 1