ネットワーク出力に基づくExcel 2010のピボットテーブルがあります。ネットワークに投稿したユーザーの1週間あたりのユニークな値をカウントしたいと思います。
私はこのトピックを見つけました: 一意の値をカウントする単純なピボットテーブル これにより、データに追加の列が追加されます。私にとっての問題は、テーブル全体ではなく、週ごとに一意の値が必要なことです。
入力例:
week 1 USER_A message1
week 1 USER_B message2
week 1 USER_A message3
week 2 USER_A message4
week 2 USER_B message5
week 2 USER_C message6
Excelが実際に行うことは、カウントを要求すると、週1と週2の両方に3が与えられるということです。週1のカウントは2(ユーザーが2人いるため)であり、週のカウントが必要です。 2は3です(3人のユーザーがいるため)。
誰でもこれがどのようにできるか知っていますか?
新しい列を作成して式を追加できます。
=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)>1,0,1)
そして、この列をピボットします:
別のオプションは、2つの列を連結してから重複を削除することではないでしょうか?ジェリーの投稿の画像を使用すると、手順は次のようになります。
= CONCATENATE(A2、 ""、B2)
これにより、行2の結果は「週1 USER_A」、行2の結果は「週1 USER_B」となります。
これで、列AとBの一意のインスタンスのみをカウントできるようになります。これは、私が過去に行ったことです。うまくいけば、私はそれを完全に間違った方法で行っていなかったのです! :-)
データの送信元を指定しなかったため。
私はあなたのデータがSQLデータベースに格納されていると仮定します。パーティション数またはrow_numberパーティション数を使用してこれらの結果を達成できます。
Jerryが提供するソリューションを完了すると、「ユーザー数」列はSQLから次のように実現できます。
case when row_number() over (partition by Week order by Users) = 1 then 1 else 0 end as [Unique?]
したがって、これは実際にはもう少し多く、最初に結果セットを個別の週でパーティション化し、Users列を並べ替えて、パーティションのすべての行にシーケンシャルIDを割り当てます。基本的に、すべてのパーティションで1行目を除外します。
データがSQLからのものでない場合は、無視してください。
説明では私はあなたのテーブルの写真を使用します(私の写真を投稿することはできません)。最初にテーブルをWeekでソートし、次にsersでソートしてから、セルD2に= IF(AND(A3 = A2、B3 = B2)、0,1を挿入します。 )。列に数式をコピーします。私が使用する大きなスチューデントテーブルA1:P141736では、この式はすぐに機能します。