担当者が担当したリクエストの月間ランキング

はじめに

コールセンターやチケット システムなどで、担当者が担当したリクエストの月間ランキングなどで効率的に管理することは、あらゆる組織の運営に不可欠です

Smartsheet コミュニティでの最近の問い合わせでは、あるユーザーが、処理されたリクエストの月間カウントを表示し、最も多くのリクエストを処理した上位 3 人のユーザーを特定するダッシュボードを作成する支援を求めていました。さらに、このユーザーは、メイン シートと、7 日以上前に解決したリクエストを保存するアーカイブ シートの両方を考慮する必要があり、問題を複雑にしていました。

この記事では、数式や関数、効果的なデータ処理テクニックを組み合わせてこの課題に対処し、指標を生成するソリューションを紹介します。

  上のイメージをクリックすると公開ダッシュボードを見ることができます。

課題を理解する

ユーザーの主な目標は、メインシートとアーカイブシートの両方からのデータに基づいて、月間リクエスト数と、最も多くのリクエストを処理した上位3人のユーザーを提供するダッシュボードを開発することでした。これを実現するために、ユーザーはすでに別のメトリクスシートを作成し、両方のシートを参照して各月のリクエストカウントを算出していました。

リクエストカウントのメトリクスを作成する

特定の月に処理されたリクエストの総数を計算するために、COUNTIFS関数を2つの異なる計算式で使用しました。最初の数式はメインシートに適用され、2番目の数式はアーカイブシートに適用されました。IFERROR、MONTH、YEAR関数を使用し、リクエストの日付をメトリクスシートで指定された月と年と比較する数式を作成しました。

  • =IFERROR(COUNTIFS({Email}, @cell = Name@row, {Date}, MONTH(@cell) = [This Month -1]#), “”)
  • =IFERROR(COUNTIFS({Email of Archive}, @cell = Name@row, {Date of Archive}, MONTH(@cell) = [This Month -1]#), “”)

上の式で、{Email}、 {Date} はメインシートのもの、{Email of Archive}、 {Date of Archive}はアーカイブシートのものです。(なお、参照の名前は{Name}の方が分かりやすかったかもしれません。)

ユーザーランキングの処理

RANKEQ 関数を用いてリクエスト数に基づいてトップ3のユーザーを決定しようとしたときに、問題が発生しました。RANKEQ 関数は、同順位の場合、例えば、1、2、2、2、5、というように、複数のユーザーが同じリクエストのカウントを持つ場合、同順位表示します。
ユーザーは、ランクをスキップせず、同じポジションのすべてのユーザーを表示するソリューションを必要としていました。
この問題に対処するため、同順位を処理するための 2 つの計算式 (順位をスキップする計算式とスキップしない計算式) を提案しました。

解決策として、同じ順位のユーザーの行番号を対象としたRANKEQ 関数を使用して、同順位のスキップせずにランクを割り当てることにしました。さらに、JOIN関数とCOLLECT関数を利用して、同じ順位のユーザー名を表示させました。これらの計算式を実装することで、上位3名のユーザー名を取得し、対応するリクエスト数を取得することができるようになりました。(なお、同順位の場合、名前 (Name)のリストの上にあるものが上位の順位とする、という割り切りをしました。)

  • =IF(ISTEXT(Name@row), RANKEQ([#]@row, COLLECT([#]:[#], [This Month: Rank]:[This Month: Rank], [This Month: Rank]@row), 1) – 1, “”)

少し難しいので解説します。

  • 数式はIF文で始まり、現在の行の「名前」(Name@row) 列のセルにテキストが含まれているかどうかをチェックします(ISTEXT関数を使用)。セルにテキストが含まれている場合は、数式の次の部分に進みます。そうでない場合は、空文字列(””)を返します。
  • 次の部分では、RANKEQ関数を使用して、現在の行の「#」列のセル内の値にランクを割り当てます。RANKEQ関数は、値を “#”列の値の範囲と比較し、その順位を返します。比較する範囲はCOLLECT関数を用いて、「#」列の中から、[今月:ランク]:[今月:ランク] ([This Month: Rank]:[This Month: Rank]) の条件範囲が、その行の「今月:ランク」列 ([This Month: Rank]@row) と等しいものに限られるようにします。
  • 例えば、上のイメージでは、ランク同順位11位のものが7ありますが、その「#」列からCOLLECT関数でそれらの「#」の値を含む範囲を取得し、RANKEQ関数で順位付けしています。なお、順位は降順に基づいて計算されるため、最も高い値の順位は1になります。
  • 最後に、RANKEQ関数が最高値に1のランクを割り当てていることを考慮して、算出されたランクから1を差し引きます。この調整により、最高値はランク0に対応し、2番目に高い値はランク1に対応し、以下同様となります。

ユーザーの自動検索

また、担当者が変わっても、リクエストに対応したユーザー名を自動的に取得できるようにすることも検討課題でした。そこで、あらかじめ用意した十分な数の行番号とDISTINCT関数を使った解決策を考案しました。DISTINCT関数をメインシートに適用することで、ユニークなユーザー名を動的に取得することができ、チームに変更があっても測定値の正確性を確保することができました。

  • =IFERROR(INDEX(DISTINCT({Name}), [#]@row), “”)

まとめ

効率的な運用を維持するためには、チケット システムなどの指標を効果的にモニターすることが不可欠です。Smartsheet の機能を活用し、適切な数式や関数を使用することで、ユーザーは貴重な洞察を提供する包括的なダッシュボードを作成することができます。メインシートとアーカイブシートの両方からリクエスト数に基づいて上位 3 人のユーザーを計算するという課題に取り組むことで、個人のパフォーマンスをより深く理解し、プロセスを最適化することができます。

コメントを残す