web-dev-qa-db-ja.com

ピボットテーブル-一意の値をカウント-Excel 2010

ネットワーク出力に基づく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人のユーザーがいるため)。

誰でもこれがどのようにできるか知っていますか?

5
NillsF

新しい列を作成して式を追加できます。

=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)>1,0,1)

そして、この列をピボットします:

enter image description here

8
Jerry

別のオプションは、2つの列を連結してから重複を削除することではないでしょうか?ジェリーの投稿の画像を使用すると、手順は次のようになります。

  • 列Dを挿入
  • 列Dに式を入力します。

= CONCATENATE(A2、 ""、B2)

これにより、行2の結果は「週1 USER_A」、行2の結果は「週1 USER_B」となります。

  • [データ]タブで[重複をハイライト]を選択します
  • 列Dのみを選択し、[OK]をクリックします。

これで、列AとBの一意のインスタンスのみをカウントできるようになります。これは、私が過去に行ったことです。うまくいけば、私はそれを完全に間違った方法で行っていなかったのです! :-)

1
Jay

データの送信元を指定しなかったため。

私はあなたのデータが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からのものでない場合は、無視してください。

1
Pedro Rodrigues

説明では私はあなたのテーブルの写真を使用します(私の写真を投稿することはできません)。最初にテーブルをWeekでソートし、次にsersでソートしてから、セルD2に= IF(AND(A3 = A2、B3 = B2)、0,1を挿入します。 )。列に数式をコピーします。私が使用する大きなスチューデントテーブルA1:P141736では、この式はすぐに機能します。

0
Ante Franjic