【Excel】ローデータを触らずに型をそろえる|20261028を日付に、コードの数値と文字列を合わせる

Excel・業務効率化

実務では、店舗コードや商品コードを使って、XLOOKUPで検索することがよくあります。ところが、データの出どころによって型が違います。ほかの人が基幹システムから出すデータは、店舗コードや商品コードが文字列です。私の部署のデータベースから出すデータは、同じコードが数値です。見た目は同じ「1001」でも、片方が文字列、片方が数値だと、XLOOKUPでは見つかりません。

日付も、「20261028」のような8桁の値で出てくることがあります。このままでは、日付として計算や絞り込みができません。

この記事では、ローデータには手を加えずに、式で型をそろえる方法を紹介します。

なお、この記事の表や手順は説明のために作ったもので、実際に使っているExcelとは作りが違います。コードや数字も架空です。

ローデータは触らず、横の列で型を変える

資料を作るときは、ローデータをなるべく触らないようにしています。手で直すと、間違いのもとになるからです。

そこで、次のような形にしています。

  • C列から右に、ローデータをそのまま貼り付ける
  • A列・B列には式を入れておき、日付やコードの型を変える

式の列は固定しておくので、新しいデータを貼り付けるだけで、毎回同じように変換されます。

式の列だと分かるように、A列とB列の見出しに色を付けておくのも有効です。どこから貼り付ければよいかも、ひと目で分かります。

表をテーブルにしておくと、データを貼り付けて行が増えたときも、A列とB列の式が自動で入ります。式を下までコピーし忘れる心配がありません。テーブルの便利な点は、こちらの記事で紹介しています。

【Excel】テーブルは設定するだけ|一手間で増えるメリットと注意点
Excelのテーブルは、設定するだけで式の自動入力や範囲の自動拡張など、便利なことがたくさん増えます。設定方法とメリット、使っていて気づいた注意点を紹介します。
A:日付(式)B:商品コード(式)C:日付D:商品コードE:数量
2026/10/110012026100110013
2026/10/110022026100110025
2026/10/210012026100210012

C列からE列が貼り付けたローデータ、A列とB列が式で変換した値です。

20261028を日付に変える

A2セルに次の式を入れます。

=DATE(LEFT(C2,4),MID(C2,5,2),RIGHT(C2,2))

LEFTで先頭の4文字(年)、MIDで5文字目から2文字(月)、RIGHTで最後の2文字(日)を取り出して、DATE関数で日付にしています。C2が数値の20261028でも、文字列の「20261028」でも、同じ式で日付になります。

結果が46323のような数字で表示される場合は、セルの表示形式を「日付」にします。

見た目だけ日付にしたい場合

表示を変えるだけでよければ、TEXT関数でもできます。

=TEXT(C2,"0000!/00!/00")

「!」は、次の1文字をそのまま表示するという意味です。「2026/10/28」と表示されますが、中身は文字列なので、日付として計算したり、日付で絞り込んだりはできません。表示用として使います。

XLOOKUPで数値と文字列をそろえる

コードの型を変えるときは、次の2つを使っています。

  • 文字列を数値にする:=D2*1
  • 数値を文字列にする:=D2&""

文字列の「1001」に1を掛けると、数値の1001になります。反対に、数値の1001に空の文字列をつなげると、文字列の「1001」になります。

たとえば、基幹システムから出したデータ(商品コードが文字列)で、私の部署のデータベースから出した商品マスタ(商品コードが数値)を検索する場合は、検索値に1を掛けて数値にそろえます。

=XLOOKUP(D2*1,商品マスタ[商品コード],商品マスタ[商品名])

反対に、商品マスタの商品コードが文字列なら、D2&"" にします。検索する側(商品マスタ)の型に、検索値を合わせるのがポイントです。

B列で =D2*1 のように変換しておき、XLOOKUPではB列を使う形でも同じです。

型の見分け方

初期設定では、数値はセルの右寄せ、文字列は左寄せで表示されます。また、文字列の数値には、セルの左上に緑の三角が付くことがあります。見た目が同じなのにXLOOKUPで見つからないときは、両方の型を確認してみてください。

パワークエリのマージでも、型の違いで失敗したことがあります。そちらはこの記事で紹介しています。

【Excel】パワークエリでマスタを結合する|クエリのマージで商品マスタの列を足す
パワークエリの「クエリのマージ」で、ローデータに商品マスタのカテゴリや箱のサイズの列を足す方法を紹介します。

区切り位置との違い

[データ]→[区切り位置]でも、20261028を日付に変えたり、文字列の数値を数値に変えたりできます。

ただ、区切り位置はローデータそのものを変える操作なので、データを貼り付けるたびにやり直す必要があります。式の列にしておけば、貼り付けるだけで済みます。毎回データを貼り替える資料では、式で変える方が手間も間違いも少なくなります。

まとめ

  • ローデータは触らず、横の列の式で型を変えると、貼り付けるだけで毎回同じ結果になる
  • 20261028のような値は、DATE・LEFT・MID・RIGHTで日付にできる
  • 見た目だけならTEXT関数でもよいが、中身は文字列になる
  • XLOOKUPで型が合わないときは、検索値に *1 で数値、&"" で文字列にそろえる
  • 区切り位置は、貼り付けるたびにやり直しが必要
タイトルとURLをコピーしました