コールセンターのAHT(平均処理時間)をエージェント別に月次で追うと、月ごとに順位や並びが変わり、比較やトレンドが見えにくくなりがちです。この記事では、Excelでデータを「同じ担当者を同じ軸で追える形」に整え、折れ線トレンドとMoM差分・Rankで外れ値(アウトライヤー)を発見する具体手順を、実務でつまずきやすいポイント込みで解説します。
なぜ「月ごとに順位が入れ替わる表」はトレンド分析に弱いのか
月ごとにAHTの順位順で並んだ表は、ぱっと見で「その月の上位・下位」が分かる一方で、トレンド(推移)を見る用途には不向きです。理由はシンプルで、同じエージェントが毎月違う行に移動してしまうからです。
この状態だと、折れ線グラフを作っても系列がズレたり、月を跨いだ比較が崩れたりして、「本当に悪化したのか」「並びが変わっただけなのか」が判断できません。MoM(Month over Month、前月比)や外れ値検知も同様で、同一人物を同一軸で追跡できるデータ構造が必須になります。
結論:まず「エージェントが固定されるデータ構造」に整える
最初に押さえるべきポイントは、グラフや関数ではなくデータの持ち方です。おすすめは縦持ち(正規化)で、最終的にピボットで自由に横持ちへ変換できる形にしておくことです。
| 持ち方 | 見た目 | 強み | 弱み | おすすめ度 |
|---|---|---|---|---|
| 横持ち(行=Agent、列=月) | 1行で推移が見える | 折れ線が作りやすい/閲覧しやすい | 月追加で列が増える/元データの並びが変わると作り直しが発生しやすい | 小規模・運用が固定なら有力 |
| 縦持ち(列=月/Agent/AHT) | 1行=1人×1か月 | 並びが変わっても崩れない/ピボットで自由に集計・可視化できる/外れ値検知に強い | 最初は見慣れない/ピボットや集計が前提 | 最優先でおすすめ |
以降は、縦持ちをベースに「折れ線トレンド」「MoM」「外れ値」「順位(Rank)」まで一気に作る流れで説明します。横持ち派の方も、縦持ちを作っておくと後で楽になります。
最初に確認しておきたい前提:AHTの定義と月の切り方
同じ“平均処理時間”でも、集計条件がブレるとグラフは正しくても結論がズレます。Excel作業に入る前に、最低限ここだけは揃えておくと、外れ値が「本当に異常」なのか「定義の違い」なのかを切り分けやすくなります。
| 確認ポイント | 例 | 揃える理由 |
|---|---|---|
| AHTの内訳 | 通話+保留+後処理(ACW)を含む/含まない | 含む/含まないが混在すると、月やチームで比較できない |
| 対象チャネル | 電話のみ/電話+チャット | チャネルが違うとAHTの水準が変わる |
| 対象案件 | 全案件/特定キューのみ | 配属や担当領域の変更で“外れ値”が出ることがある |
| 月の定義 | 暦月/締め日(例:20日締め) | MoMが“前月比”として一致しない原因になりやすい |
| 件数(母数) | 月の対応件数が少ない人 | 少数サンプルはAHTが跳ねやすく、外れ値が増える |
特に件数は、AHTの“異常”を判断するうえで重要です。後半で「件数をセットで持つべき理由」と、実務向けのフィルタ方法も紹介します。
縦持ち(正規化)データを作る:最小構成は3列
まずは次の3列を作ります。これが“壊れない土台”です。
- 月(例:2025/01、2025/02…)
- Agent(エージェント名でも良いが、できればID推奨)
- AHT(mm:ss。後で数値に変換)
可能なら、追加で以下も入れておくと分析の説得力が上がります。
- 対応件数(Calls)
- チーム/拠点/スキル
- キュー/カテゴリ(問い合わせ種別)
サンプル(縦持ち)
| 月 | AgentID | Agent名 | AHT(mm:ss) | 対応件数 |
|---|---|---|---|---|
| 2025/01 | A012 | 佐藤 | 05:10 | 420 |
| 2025/01 | A034 | 鈴木 | 06:05 | 95 |
| 2025/01 | A051 | 高橋 | 04:42 | 310 |
| 2025/02 | A012 | 佐藤 | 05:55 | 405 |
| 2025/02 | A034 | 鈴木 | 04:58 | 120 |
| 2025/02 | A051 | 高橋 | 04:50 | 290 |
このように「月×エージェント」で行が分かれていれば、順位が変わってもグラフは崩れません。ここまで作れれば半分勝ちです。
元データが「月ごとに順位表」で並びが変わる場合の整形アイデア
現場では、月別シート(1月、2月…)に“順位順リスト”があり、毎月並びが変わるケースが多いです。この場合は、月の列を追加して縦に結合するのが基本です。
手作業でもできる最短ルート
- 各月シートに「月」列を追加(全行に同じ月を入力)
- 列名を統一(AgentID、Agent名、AHT、対応件数など)
- 全月分を1つのシートにコピーして縦に貼り付け
- 範囲を選択してCtrl+Tでテーブル化(後々のピボットや式が安定)
更新が毎月発生するなら:Power Queryで“追加するだけ”運用にする
毎月同じ作業を繰り返すなら、Power Query(Excel標準機能)で「フォルダ内の月次ファイルを結合」「複数シートを結合」まで自動化できます。ポイントは、最終的に縦持ち(正規化)を吐き出すことです。
- データの取得 → ファイルから →(フォルダ/ブック)
- 必要な列だけ残す(AgentID/Agent名/AHT/件数)
- 月列を追加(ファイル名やシート名から抽出できると強い)
- データ型を整える(AHTは後で数値化)
- 閉じて読み込む → テーブルとして出力
Power Queryを使うと、来月分のファイルを置いて更新するだけで、ピボットとグラフまで連動できます。「外れ値監視」を運用として回したい場合に特に効きます。
AHT(mm:ss)を“数値”として扱えるようにする
AHTがmm:ss表示でも、Excel内部では次の2パターンがあります。
- 時間(シリアル値)として入っている:扱いやすい(理想)
- 文字列として入っている:変換が必要(よくある)
まず確認:AHTセルが数値か文字列か
簡単な見分け方は次の通りです。
- セルの表示が揃っていても、左寄せなら文字列、右寄せなら数値の可能性が高い
- 別セルで
=ISNUMBER(AHTセル)を試す(TRUEなら数値、FALSEなら文字列)
時間として入っている場合:分に変換するなら「×1440」が堅い
Excelの時間は「1日=1」として扱われるため、分に直すなら次が確実です(1時間以上が混ざってもズレません)。
=AHTセル*1440
秒にしたい場合は次です。
=AHTセル*86400
注意:MINUTE()+SECOND()/60 でも一見同じになりますが、1時間以上(例:65:30)が混ざるとMINUTEだけが「5」になってズレます。AHTの上限が読めない運用なら、×1440(分)が安全です。
文字列(”mm:ss”)として入っている場合:まず時間に変換する
「05:10」が文字列の場合は、時間として解釈できる形に変換してから分へ直します。代表的なやり方を表にまとめます。
| 状況 | おすすめ式 | ポイント |
|---|---|---|
| mm:ssが常に2桁(例:05:10) | =TIME(0,LEFT(A2,2),RIGHT(A2,2)) | 固定桁なら最短。時間化したセルは後で*1440 |
| 分が1〜3桁で変動(例:5:10、125:30) | =LET(p,FIND(":",A2), TIME(0, VALUE(LEFT(A2,p-1)), VALUE(MID(A2,p+1,2)))) | 分が可変でもOK。TIMEは分が60超でも内部で繰り上がる |
| コロンが入っていない/表記揺れがある | 整形ルールを先に統一(Power Queryや置換) | 外れ値以前に“入力ミス”の可能性が高い |
時間に変換できたら、分析用に分(小数)列を作ります。
=変換した時間セル*1440
表示はmm:ssのままにしたい:セル書式は「[m]:ss」
Excelで60分を超える可能性があるなら、表示形式は[m]:ssがおすすめです。通常の「mm:ss」だと、60分を超えた瞬間に分がリセットされ、見た目が意図とずれます。
- セルの書式設定 → 表示形式 → ユーザー定義 →
[m]:ss
グラフの軸も同様に、軸の書式設定で数値の表示形式を[m]:ssにしておくと、AHTが時間として入っている場合は見やすくなります(分に変換している場合は「分」表記で運用するのが管理しやすいです)。
MoM(前月比)を作る:差分と変化率を分けて持つ
MoMは「変化したこと」を一瞬で炙り出すのに強力ですが、指標は最低でも2つに分けるのがおすすめです。
- 差分(当月−前月):何分増えた/減ったかが直感的
- 変化率(差分÷前月):元が小さい人/大きい人を公平に比較しやすい
| 指標 | 例 | 解釈 | 外れ値の見つけ方 |
|---|---|---|---|
| MoM差分(分) | +1.2分 | 前月より平均処理が長くなった | 絶対値が大きい人を強調(条件付き書式) |
| MoM変化率 | +18% | 相対的な悪化/改善が大きい | 元が短い人でも異常が見える(ただし前月が小さいと跳ねる) |
前月AHTを参照してMoMを出す(縦持ちの基本形)
縦持ちでMoMを作るコツは、「月+AgentID」のキーを作って前月行を引き当てることです。Excelテーブル(例:tblAHT)で次の列を用意すると安定します。
- 月(できれば日付:各月1日で統一。例:2025/02/01)
- AgentID
- AHT_分(数値)
- Key:
yyyymm|AgentID - PrevKey:前月のキー
Key列の例(テーブル構造化参照のイメージ):
=TEXT([@月],"yyyymm")&"|"&[@AgentID]
PrevKey列の例:
=TEXT(EDATE([@月],-1),"yyyymm")&"|"&[@AgentID]
前月AHT(分)を取得:
=XLOOKUP([@PrevKey], tblAHT[Key], tblAHT[AHT_分], "")
MoM差分(分):
=IF([@前月AHT_分]="","", [@AHT_分]-[@前月AHT_分])
MoM変化率:
=IF(OR([@前月AHT_分]="",[@前月AHT_分]=0),"", ([@AHT_分]-[@前月AHT_分]) / [@前月AHT_分])
前月が存在しない(入社月/欠勤/集計対象外など)ケースは必ず出るので、空欄を返すようにしておくと、グラフや外れ値検知で誤検知が減ります。
エージェント別の月次トレンド(MoM)を折れ線で可視化する
縦持ちができたら、可視化はピボットテーブル/ピボットチャートが最も運用向きです。なぜなら、月が増えても、エージェントが増減しても、グラフが“壊れない”からです。
ピボットテーブルの作成手順(基本)
- 縦持ちテーブル内のセルを選択
- 挿入 → ピボットテーブル
- 行:月
- 列:Agent名(またはAgentID)
- 値:AHT(分)
重要:値の集計方法が「合計」になっていたら、必ず「平均」に変更します。
- 値フィールドの設定 → 集計方法 → 平均
折れ線(トレンド)を作る
- ピボットテーブルを選択
- 挿入 → ピボットチャート → 折れ線(マーカー付き)
グラフが読みやすくなる設定の目安を表にまとめます。
| 項目 | おすすめ | 理由 |
|---|---|---|
| X軸(月) | 月を日付で統一(各月1日) | 並びが崩れない/欠損月も扱いやすい |
| Y軸 | AHTは「分(小数)」で運用 | 差分や閾値判断が直感的(例:+0.8分) |
| 系列が多い場合 | スライサーで絞り込み | 全員同時表示は読めなくなる |
| 注目させたい線 | 外れ値候補だけ強調(太さ/マーカー) | 最小の操作で“見るべき人”が分かる |
外れ値(アウトライヤー)を見つける実務的アプローチ
外れ値は「統計的に外れている」だけでなく、「運用上、調査すべき変化」を指すことが多いです。おすすめは次の順番です。
- 折れ線でスパイク/急落を目視(最短で異常に気づける)
- MoM差分でルール化(見落としを減らす)
- 月内分布(平均との差・ばらつき)で統計的に補強(説明力を上げる)
目視で見つける:注目すべき“形”
折れ線で外れ値を探すときは、単に高い/低いだけでなく、次のような形に注目すると原因に当たりやすいです。
- 単月だけ急上昇:一時的な業務変更、難易度の高い案件集中、研修・引き継ぎ
- 段差で上がって戻らない:担当範囲変更、スキル付与、ツール変更(手順増)
- 急激な改善:ショートコール増、分類変更、ショートカット導入、計測定義の変更
MoM差分で強調する:条件付き書式が最速
MoM差分(分)列を作ったら、条件付き書式で“変化が大きい人”を目立たせます。閾値は運用に合わせますが、最初は分かりやすく次のようなルールが扱いやすいです。
| ルール例 | 条件 | 意図 |
|---|---|---|
| 急悪化を赤 | MoM差分 ≥ +0.8分 | 「前月より約48秒以上悪化」は調査対象にする |
| 急改善を青 | MoM差分 ≤ -0.8分 | 改善理由が再現できるか確認する |
| 件数が少ない月は薄く扱う | 対応件数 < 50 | 少数サンプルのブレを“外れ値”と誤認しない |
閾値は固定でも良いのですが、AHT水準が月によって揺れる現場では、次のように「月ごとのばらつき」を使うと、よりフェアになります。
月平均との差(Zスコア)で“その月の中で外れている人”を出す
同じ月の中で、平均との差が大きい人は外れ値候補になります。代表的なのがZスコア(標準化)です。
- 月平均:その月のAHT(分)の平均
- 月標準偏差:その月のAHT(分)のばらつき
- Zスコア:(個人AHT − 月平均) ÷ 月標準偏差
目安として、Zスコアが+2以上なら「月内でかなり遅い」、-2以下なら「月内でかなり速い」と判断しやすいです(チーム人数が少ない場合は基準を緩めます)。
Excel 365なら、同じ月の値を抽出して計算できます(テーブル名や列名は環境に合わせてください)。
=LET(m,[@月],
vals,FILTER(tblAHT[AHT_分], tblAHT[月]=m),
avg,AVERAGE(vals),
sd,STDEV.S(vals),
IF(sd=0,"", ([@AHT_分]-avg)/sd ))
365以外でも、ピボットで「月別平均」「月別標準偏差」を作り、VLOOKUP/XLOOKUPで引いてくる運用ができます。ピボットの集計方法に「標準偏差」が出せる環境なら、それが最短です。
IQR(四分位範囲)で“極端値”を頑健に検出する
Zスコアは分布が歪んでいると影響を受けやすいことがあります。コールセンターのAHTは、難易度の高い案件が混ざると右に伸びやすく、完全な正規分布になりにくいケースもあります。
その場合は、IQR(四分位範囲)ベースが実務で扱いやすいです。
- Q1:下位25%
- Q3:上位25%
- IQR:Q3 − Q1
- 外れ値の目安:Q3 + 1.5×IQR を超える(遅い側)
Excel 365の例:
=LET(m,[@月],
vals,FILTER(tblAHT[AHT_分], tblAHT[月]=m),
q1,QUARTILE.INC(vals,1),
q3,QUARTILE.INC(vals,3),
iqr,q3-q1,
IF([@AHT_分]>q3+1.5*iqr,"要確認",""))
“要確認”フラグが付いた行だけフィルターすれば、外れ値一覧が完成します。統計の厳密さよりも、再現性のあるルールで毎月の変化を見落とさないことが目的なら、IQRはとても相性が良いです。
外れ値を「一覧化」して、確認作業を短くする
折れ線で見つけても、結局は「誰の、どの月が、どれくらい外れているか」を一覧で見たくなります。次のような列を作っておくと、チェックが速くなります。
- 外れ値フラグ(要確認/OK)
- 理由メモ(チーム変更、キャンペーン対応、研修など)
- 確認者/確認日
Excel 365なら、外れ値だけ抽出する“監視用ビュー”も作れます。
=FILTER(tblAHT, tblAHT[外れ値フラグ]="要確認")
これを別シートに置けば、「今月見るべき人」だけが自動的に並ぶ運用にできます。
「順位が毎月変わる」も追いたい場合:Rank列を追加する
AHTそのものの推移に加えて、「相対順位」も追うと、全体の水準変化(繁忙で全員が遅くなる月など)に引っ張られずに評価できます。Rankは“補助指標”として持っておくのがおすすめです。
横持ち(ピボット後)のRankはシンプル
たとえば2月列のAHTに対して、同じ2月列の範囲で順位を付けます(AHTが短いほど良い前提)。
=RANK.EQ(2月のAHTセル, 2月列の範囲, 1)
- 最後の引数
1は昇順(小さいほど上位) - 同値があると同じ順位になります(必要ならRANK.AVGで平均順位)
縦持ちのまま月内順位を出す(365の例)
=RANK.EQ([@AHT_分], FILTER(tblAHT[AHT_分], tblAHT[月]=[@月]), 1)
順位推移を折れ線で出す場合は、順位の軸が「1が上位」なので、グラフのY軸を反転(最大値を下、最小値を上)すると直感的です。
エージェント数が多くて折れ線が読めないときの対処
全員を1枚の折れ線にすると、線が密集して“何も読めないグラフ”になりがちです。ここは割り切って、見る対象を切り替えられる仕組みを作るのが現実的です。
スライサーで「チーム」「拠点」「上位/下位」を切り替える
- ピボットテーブルを選択 → 挿入 → スライサー
- チーム、拠点、Agent名などを選ぶ
「全体比較」はスライサーで“俯瞰”、個別は“絞り込み”という役割分担にすると、ダッシュボードが破綻しにくいです。
スパークラインで“行ごとにミニトレンド”を持たせる
横持ち(Agent行×月列)を作れるなら、各行にスパークラインを入れるのもおすすめです。
- 挿入 → スパークライン → 折れ線
- データ範囲:そのAgentの月次AHT行
一覧性が高く、「急に跳ねた人」をスクロールしながら発見できます。折れ線チャートが混雑する環境では特に効きます。
外れ値の誤検知を減らすコツ:対応件数(母数)を必ず一緒に見る
AHTは平均値なので、母数(対応件数)が少ないと簡単にブレます。外れ値を見つけても、実は「今月は10件しか対応していないので偶然長い案件が混ざっただけ」だった、ということが起こります。
実務では、次のようなルールを入れると無駄な調査が減ります。
| ルール | 例 | 狙い |
|---|---|---|
| 最低件数未満は“参考”扱い | 対応件数 < 50 | 少数サンプルの振れを除外 |
| 件数で重み付けして全体傾向を見る | 加重平均AHT | 多数対応者の影響を正しく反映 |
| 外れ値は「大きい差分 × 件数多い」を優先 | MoM差分が大きく、件数も多い | 影響範囲が大きい改善/悪化を先に潰す |
加重平均AHT(分)を作る例(エージェント別ではなく、チームや全体の月次を見るときに便利):
=SUMPRODUCT(tblAHT[AHT_分], tblAHT[対応件数]) / SUM(tblAHT[対応件数])
よくあるつまずきと解決策
ピボットでAHTが「合計」になってしまう
値フィールドの設定で「平均」に変更します。AHTは平均時間なので、合計に意味は出にくいです。もし「通話秒数の合計」を持っているなら、合計はそちらで使い、AHTは平均として扱うのが基本です。
グラフの軸が 0.08 みたいな小数表示になる
時間(シリアル値)でプロットしている場合、Excel内部では「日」の小数なのでそう見えます。軸の書式設定で表示形式を変えます。
- 軸の書式設定 → 表示形式 → ユーザー定義 →
[m]:ss
一方で、分析用に「分(小数)」へ変換しているなら、軸は「分」で統一し、ラベルで「分」と明示すると運用が安定します。
同じ人なのに名前表記が揺れて別人扱いになる
外れ値検知や順位は“人の追跡”が命なので、可能ならAgentIDをキーにしてください。難しければ、別シートに「表記ゆれ対応表(名寄せ表)」を作り、XLOOKUPで統一名を作ってから分析に使うのがおすすめです。
欠損月があるとMoMが飛ぶ
欠損月(前月が存在しない)はMoMを空欄にするのが基本です。0を入れると「前月比が爆増」になって誤検知が増えます。MoM列はIF(前月が空なら空)の形にしておきましょう。
テンプレとして使える列設計(縦持ちの推奨カラム)
運用が回りやすい“実務向けテンプレ”として、以下の列を持っておくと、トレンド・MoM・外れ値・順位まで一気通貫で扱えます。
| 列名 | 例 | 目的 |
|---|---|---|
| 月 | 2025/02/01 | 軸を日付で統一 |
| AgentID | A012 | 名寄せ・追跡のキー |
| Agent名 | 佐藤 | 表示用 |
| チーム | Team-B | スライサー/比較軸 |
| AHT(時間) | 0:05:10 | 表示・時間フォーマット用 |
| AHT(分) | 5.1667 | 分析・差分・閾値判定用 |
| 対応件数 | 420 | 信頼度・重み付け |
| 前月AHT(分) | 4.95 | MoM計算 |
| MoM差分(分) | +0.22 | 急変の検出 |
| MoM変化率 | +4.4% | 相対変化の検出 |
| 月平均との差 | +0.60 | 月内でのズレ |
| Zスコア | +2.1 | 統計的外れ値の補強 |
| Rank | 18 | 相対順位の推移 |
| 外れ値フラグ | 要確認 | 一覧化・監視 |
| メモ | 担当変更 | 原因の蓄積 |
この形にしておけば、月が増えても列を増やす必要はなく、ピボット側で“見たい形”に変換して使い続けられます。
まとめ:AHTのMoMトレンドと外れ値は「整形→可視化→ルール化」で安定する
エージェント別AHTを月次で追い、外れ値を見つける最短ルートは次の流れです。
- 順位表のまま頑張らない(並びが変わる表はトレンドに不向き)
- 縦持ち(月/Agent/AHT)の正規化データを作り、同一人物を追跡できる形にする
- AHT(mm:ss)は時間として解釈し、分析用に分(小数)へ変換する(
*1440) - ピボット+折れ線でトレンドを作り、MoM差分で急変を強調する
- 必要に応じてZスコア/IQRで外れ値をルール化し、一覧化して運用に落とし込む
- 順位(Rank)を追加すれば、全体水準の上下に左右されない評価ができる
- 最後に、対応件数を必ずセットで見て誤検知を減らす
「データ構造を整える」ことができれば、グラフも外れ値検知も毎月の更新で崩れません。まずは縦持ちの土台を作り、ピボットとMoM差分から始めてみてください。そこにRankやZスコアを足すほど、改善・悪化の説明がしやすくなります。

コメント