![Excel ピボット テーブルをカウントのパーセンテージで並べ替える](https://rvso.com/image/1490198/Excel%20%E3%83%94%E3%83%9C%E3%83%83%E3%83%88%20%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E3%83%91%E3%83%BC%E3%82%BB%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B8%E3%81%A7%E4%B8%A6%E3%81%B9%E6%9B%BF%E3%81%88%E3%82%8B.png)
次の形式でタイムシート承認を示すソース データがあります (約 850 人の従業員と 200 人の管理者)。
Employee Name Manager Name TS Approved?
Employee 1 Manager 1 No
Employee 2 Manager 2 Yes
Employee 3 Manager 3 Yes
Employee 4 Manager 1 No
Employee 5 Manager 3 No
次のようにピボット テーブルを作成しました (未承認の割合は、ピボット テーブルの横にある数式です)。
Count TS Approved?
Manager Name No Yes Total % Unapproved
Manager 1 11 11 100%
Manager 2 6 10 16 38%
Manager 3 7 18 25 28%
Manager 4 5 8 13 38%
Manager 5 5 4 9 56%
Manager 6 3 3 0%
Manager 7 5 5 100%
承認数で上位 5 人の最悪の承認者を取得するために並べ替える必要がありますが、5 人だけです。私の問題は次のとおりです。
- ピボットテーブル「トップ10」の「No」列を使用すると、3つの5が区別されないため、6つの値が表示されます。
- パーセンテージを追加して、最大-最小を % で並べ替え、次に最大-最小をカウントで並べ替え、最後に手動で上位 5 つを取得できるようにしました。5/5 (100%) の未承認は 5/8 (38%) よりも悪いため、% で並べ替える方法がわかりません。
- ピボット テーブルの外部に数式として追加した場合 (上記のように)、Excel ではそれらのデータに基づいてピボット テーブルを並べ替えることができません。「ピボット テーブル レポートの一部を移動することはできません...」
- テーブルに「親行の合計の%」として表示するデータを追加しても、カウントのみで並べ替えられます。
つまり、私が望むことを実現するにはどうすればよいか、誰か考えられますか?
Count TS Approved?
Manager Name No Yes Total % Unapproved
Manager 1 11 11 100%
Manager 3 7 18 25 28%
Manager 2 6 10 16 38%
Manager 7 5 5 100%
Manager 5 5 4 9 56%
Manager 4 5 8 13 38%
Manager 6 3 3 0%
注: ピボット テーブルではなく countifs を使用して簡単に実行できますが、可能であればピボット テーブル形式を使用するのが理想的です。
ありがとう!
ルイーズ
答え1
興味深い課題です。問題には次のようなものがあります:
- フィールド計算では、必要なものを得るのに十分な柔軟性がありません
- 数値を合計の % として表示し、並べ替えることができるように見えますが、実際には基になる数値に基づいて並べ替えられます。
私はテーブルとピボット テーブルを利用するソリューションを持っています。もっと簡単なソリューションがあるかもしれません。手順は次のとおりです (Excel 2016 で実行)。
- 生データ内を選択します。「挿入」リボンを選択し、「表」をクリックします。
- 新しいテーブルに、%NotApprovedの計算を挿入します。
- 「表ツール」「デザイン」リボンを選択し、「ピボットテーブルで集計」をクリックします。
- 行としてマネージャー名、値として %NotApproved を使用して、単純なピボット テーブルを作成します。
- マネージャー名を%NotApprovedの降順で並べ替える
ここに例があります。以下は、質問で説明されているものと同様の 30 行の「生データ」のスニペットです...
「挿入」リボンを選択し、「表」をクリックします...
より適切なフォーマットのデータが取得されます。D1 を選択し、次に最後の列見出しを選択して「%No」と入力します。これにより、新しい見出しを持つ新しい列がテーブルに作成されます。セル D2 に次の数式を入力します...
=IF([@[TS Approved?]]="No",1,0)/COUNTIF([Manager Name],"="&[@[Manager Name]])*100
Enter キーを押すと、テーブルに自動的に入力されます。この数式は次のことを行います。
IF([@[TS Approved?]]="No",1,0)
承認されたタイムシートが「いいえ」の場合、値 1 を取得します。COUNTIF([Manager Name],"="&[@[Manager Name]])
この行のマネージャーがテーブルに何回表示されるかを決定します。- 1 を 2 で割った結果を 100 倍した値
テーブルは次のようになります...
「テーブル ツール」「デザイン」リボンを選択し、「ピボット テーブルで集計」をクリックします。次のようにピボット テーブルを作成します...
...そしてそれを分類します...
...これを取得するには...
セットアップには多くの手順が必要に思えますが、テーブルを維持するのは非常に簡単で、これによりピボット テーブルが自動的に維持されます。
答え2
これは古い情報かもしれませんが、この問題の解決策を見つけたと思います。
- 最初のステップは、従来の右クリックで「値の表示方法」を選択し、「行の合計の%」を選択して、未承認の%を表示するだけです。
- 次に、「行ラベル」の近くにあるドロップダウンボタンをクリックします。
- 「承認されたTSの数」で「降順」を選択します
- 「その他の並べ替えオプション」を選択し、ダイアログボックスで「その他のオプション」をクリックします。
- 「レポートが更新されるたびに自動的に並べ替える」ボックスのチェックを外します(これが重要なステップです)
- 「選択した列の値」を「No」列の最初のセルとして選択します
- [OK]をクリックします
- 自動的に再更新するには、手順 2、4、5 を繰り返しますが、今回は「レポートが更新されるたびに自動的に並べ替える」をオンにします。
答え3
理由は分かりませんが、今朝の朝食で2つのことに気づきました...
- テーブルを使用するのは良いことですが、おそらく問題がさらに複雑になるだけです。
- %Unapproved は、マネージャーが担当するタイムシートの割合として計算しますが、すべての未承認タイムシートの割合として計算することもできます。
そこで、別の回答を投稿しようと思いました。
生のデータの横に、ヘッダー%No
とこの計算を下に記入します(そして下に記入します)。
=IF(C2="No",1,0)/COUNTIF($C$2:$C$31,"="&C2)*100
この数式は、このタイムシートが未承認の場合、すべての未承認タイムシートの割合を計算します。
生データは次のようになります...
ピボット テーブルを作成し、%No で並べ替えます。
マネージャーが責任を負うタイムシートの % を % 未承認にしたい場合は、列 D で次の式を使用します。
=IF(C2="No",1,0)/COUNTIF($B$2:$B$31,"="&B2)*100