Excelで日付と英数字コードをつないだ列が並ばないとき|2列でソートする確認手順

Excelの連結列の並べ替えで、日付とコードの優先順を確認する記事の表紙

Excelで日付とコードを1列につないで昇順に並べ替えたら、思った順番にならない。私も、日付のC列とコードのD列から =+D28375&INT(C28375) のようなA列を作って並べ替えた際に、この問題に当たりました。

コードには数字だけでなく、末尾に英字が付くものもあります。元のブックでどの手順が最終的に解決したかは、まだ確認できていません。ここでは、連結したA列だけを直そうとする前に、元の日付列とコード列を使って順番を確かめる方法をまとめます。

先に確認すること:日付とコードのどちらを優先するか決め、元ブックのコピーでC列とD列を2条件で並べ替えます。元ブックで実際に解決したかは未確認です。

まず、どちらを先に並べたいか決める

「日付が古い順。その日の中でコード順」なら、日付を第1条件、コードを第2条件にします。「コード順。同じコードの中で日付順」なら逆です。元の D列&INT(C列) という式だけでは、どちらの順番を望んでいたか判断できません。

たとえば同じ日付のコードが 1231、1238、1239、123A なら、その4件をどう並べたいかを最初に紙や別シートで決めます。数字と英字を混ぜたコードの業務上の順序は、Excelの既定の並べ替え順とは別のルールかもしれません。

日付優先ならC列を第1条件、コード優先ならD列を第1条件にする模式図

※説明用の模式図です。

連結列の前に、C列とD列を確認する

  1. C列の日付を2〜3セル選び、数式バーと表示形式を確認します。見た目が日付でも、文字列として保存されていると日付順にならないことがあります。
  2. D列のコードを2〜3セル確認します。数字だけのコードと 123A のような文字入りコードが混在する場合、列全体を数値に変える方法は使えません。先頭のゼロが意味を持つコードも、数値化すると情報を失う可能性があります。
  3. A列の連結結果を数件だけ見て、桁数と順序を確かめます。& でつないだ値を単純な数値キーとして扱う前提にはしません。

Microsoftも、数値や日付が文字列として保存されていると、並べ替え結果が期待と異なる場合があると案内しています。表示形式を変えるだけで元の値の型が必ず直る、とは考えず、コピーしたブックで確かめます。

元列を使って複数条件で並べ替える

元ブックを複製してから、見出しを含む表の中のセルを選びます。Excelの [データ]→[並べ替え] を開きます。

  1. 「日付優先」なら、最初の条件をC列の日付の古い順に設定します。
  2. [レベルの追加] でD列のコードを第2条件にします。
  3. 「コード優先」なら、C列とD列の条件の上下を入れ替えます。
  4. 並べ替え後、決めておいた4〜6件の期待順と照合します。行全体が一緒に動き、ほかの列との対応が崩れていないことも確認します。

Microsoftの公式手順でも、複数列の並べ替えには「レベルの追加」を使い、上にある条件から優先すると説明されています。A列の複雑な式を増やす前に、この標準機能で目的を満たせるか試す方が確認しやすいです。

数値の 0 と文字列の "0" の違いが原因で表示形式が効かなかった別の例は、Excelの文字列ゼロの記事にまとめています。

参考資料

コメントする

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA