テーブル内のPersonごとに、特定の年に最初に出現する値をカウントするExcelの数式(または複数の数式)を作成しようとしています。スーパーユーザーに関する関連する質問を検索しましたが、役に立ちませんでした。コンテキストを説明するために、各Personは1年以上の試験に参加しました。各試験年度中に、1つ以上のスコア(表の値1から9)が与えられました。たとえば、人物Aは2011年に2つのスコア(5,3)、2012年に1つのスコア(2)、2013年に2つのスコア(4,1)を持っていました。ただし、私は集計にのみ興味がありますそれぞれ何年人参加していて、何年だったかは気にしない。私のデータは次のとおりです。
Person 2011 2012 2013
A 5
A 3
A 2
A 4
A 1
B 7
B 6
C 1
C 9
C 4
C 2
D 5
これは私が望む結果です:
Person Years
A 3
B 2
C 2
D 1
SUM、COUNTIFS、およびVLOOKUPの組み合わせを使用してこの結果を達成するために、非常に多くの複雑で非効率的な方法を試しましたが、特定の年に最初に発生した値ではなく、常にすべての値をカウントしました。どうすればいいのか、Excelの関数を使ってもできるのかわからない。 VBAはわかりませんが、これには必要かもしれません。よろしくお願いします。
ピボットテーブル の仕事のように聞こえます!
テーブルを強調表示し、[挿入]→[ピボットテーブル]に移動して、希望どおりに配置します。私は次のことをします-
Raystafarianのコメントのおかげで、私は自分の質問に詳細な答えを提供することができます。ピボットテーブルを使用して、テーブル範囲全体を選択します。 [ピボットテーブルフィールドリスト]ダイアログで、レポートにPersonを追加し、チェックを外して毎年(つまり、2011、2012、2013)をValuesフィールドにドラッグします。そうすることで、この最初の結果が得られます。
_Row Labels Count of 2011 Count of 2012 Count of 2013
A 2 1 2
B 1 1
C 2 2
D 1
Grand Total 6 3 3
_
これは、行ごとの値の数をカウントして、各人が参加した年数を示すだけでなく、各人に1年に与えられたスコアの数も教えてくれるので素晴らしいです。
したがって、最後のステップでは、セルE2に数式=COUNT(B2:D2)
を追加するだけです。これにより、列A =行ラベル、列B = 2011年のカウント、列C = 2012年のカウント、列D = 2013年のカウント、列E =年で、次の結果が得られます。
_Row Labels Count of 2011 Count of 2012 Count of 2013 Years
A 2 1 2 3
B 1 1 2
C 2 2 2
D 1 1
Grand Total 6 3 3
_