「商品一覧と価格表はある。でも、並び順が違うので、そのまま貼り付けると別の商品に価格が入ってしまう」
こんなとき、必要なのは商品コードを手掛かりに、対応する値を探して追加する作業です。2本のCSVを1つにする場合でも、目的によって方法が変わります。
この記事では、縦結合と「キー突合」の違い、加工前に確認したいポイントを紹介します。表はすべて架空データで、顧客案件や受託実績ではありません。CSVの中身を見やすく表で示しています。
1.行を増やす「縦結合」と、列を足す「キー突合」
月別の商品一覧など、同じ列名・列順のCSVを上下につなぎたい場合は、縦結合が向いています。たとえば「商品コード・商品名」の表が2行ずつあれば、4行の表にまとめるイメージです。
一方、商品一覧へ別の価格表の値を追加したい場合は、商品コードなどの共通項目で照合します。この照合の目印が「キー」です。
・縦結合:同じ構造の表を上下につなぎ、行を増やす。
・キー突合:コードが一致する行を探し、別表の列を追加する。
ファイルを上下につなぐだけでは、「この商品には、どの価格を付けるか」という対応関係は解決しません。
2.架空の商品表で、価格と分類を追加してみる
残したい商品一覧を「A」、値を探す参照表を「B」とします。
A:残す商品一覧
・商品コード:0012 / 商品名:ペンA
・商品コード:0042 / 商品名:ノートB
・商品コード:0099 / 商品名:封筒C
B:参照する価格・分類表
・商品コード:0042 / 公開価格(円):空欄 / 分類:紙製品
・商品コード:0012 / 公開価格(円):120 / 分類:筆記具
・商品コード:0077 / 公開価格(円):500 / 分類:見本分類
AとBは並び順が違い、含まれる商品も一部異なります。Bの価格列を上からコピーすると、商品との対応がずれてしまいます。
ここでは、商品コードが文字列として完全に一致する行をBから探し、「公開価格(円)」「分類」をAの末尾に追加します。
加工後:Aの3行・行順・元の値を保持
・商品コード:0012 / 商品名:ペンA / 公開価格(円):120 / 分類:筆記具
・商品コード:0042 / 商品名:ノートB / 公開価格(円):空欄 / 分類:紙製品
・商品コード:0099 / 商品名:封筒C / 公開価格(円):空欄 / 分類:空欄
見ておきたいのは、空欄の理由です。
・「0042」は一致しています。ただし、Bの公開価格が空欄です。
・「0099」はBに一致するコードがないため、追加した2列が空欄です。
・Bにしかない「0077」は、Aへ新しい行として追加していません。
価格が空欄という見た目だけでは、一致しなかったのか、参照元が空欄なのか分かりません。照合結果を別に残すと、確認すべき箇所を判断しやすくなります。
3.加工前に決めておきたい4つのこと
① どちらの表を残すか
まず、行と順番を残したいAを決めます。次に、Bから追加する列を指定します。2本を入れ替えると結果も変わります。
② 商品コードの表記は一致しているか
「0012」と「12」、末尾に空白があるコード、大文字と小文字などは、完全一致では別の文字列です。見た目が似ていても、勝手に同一商品と判断しないことが大切です。
③ Bの同じコードが複数行にないか
同じコードに異なる価格があれば、どれを使うべきか決められません。同じ値が並んでいても、先頭の1行を無断で採用せず、参照表を確認します。キーが空欄の場合も加工前の確認が必要です。
④ 一致しない商品をどう扱うか
この例ではAの行を残し、追加列を空欄にしました。未一致の行を消す方法とは結果が異なるため、先に方針を決めます。
加工後は、Aの行数・行順・元の値が変わっていないか、追加値がBの該当行と一致しているかを確認します。保存したCSVを読み直して確認することも大切です。
また、Excelなどで開く際の自動変換で、コードの先頭ゼロが消える場合があります。取り込む際はコード列を文字列に指定してください。BOM付きCSVでも、型の自動変換は防げません。
商品コードによる列追加を依頼したい方へ
業務用シート工房では、「商品コードでCSVを照合し列を追加します」を7,000円で提供しています。上の例のように、個人情報・機密情報を含まない商品データへ、別CSVの公開価格や分類などを追加する、1回限りの加工サービスです。
主な対応範囲は次のとおりです。
・UTF-8(BOM付き可)・カンマ区切り・先頭1行が見出しのCSV2本。
・2本合計5,000データ行以内(見出しを除く)・5,000,000バイト以内、入力は各20列以内。
・A/Bそれぞれ指定1列の文字列完全一致で照合し、Bの1〜5列をA末尾に追加。追加列名はAの列名と重複不可。
・Aの全行・行順・既存セル値を保持。未一致は追加列を空欄にし、照合一覧で参照元空欄と区別。Bだけの行は追加せず、件数を報告。
・Bのキー重複、A/Bの空欄キー等がある場合は処理を止め、修正後のデータをご用意いただきます。
納品物は加工CSV(UTF-8 BOM付き)・照合一覧CSV・件数と確認結果のメモです。あいまい一致、表記統一、重複削除、計算・集計、文字化け修復、Excelブック加工、ECへの登録、ツール・マクロ納品、定期実行などは対象外です。
購入前の見積り相談が必須で、資料・仕様合意と購入が揃ってから3暦日目安です。合意範囲内の軽微調整は1回、当方の処理不備は回数外で修正します。
最初の相談では実ファイル・実キー・実画面を送らず、列名と架空見本、各ファイルの行数・列数・容量・文字コード、キー列、追加したい列、希望納期、AI利用制限をお知らせください。個人情報や顧客・受注データ、原価・未公開価格・機密在庫・仕入先等は対象外です。実ファイルは受入可否と保存・削除等の取扱条件に合意してからご案内します。
コード作成支援にAIを使う場合も、架空データと一般化した仕様に限ります。実データ・キー・ログ・画面は外部AIへ入力せず、AI禁止・利用条件不明の場合は受入前に確認します。
「行を増やしたい」のか、「今ある商品に別表の列を足したい」のか。ご自身の目的と照らし合わせ、詳しい条件はサービスページをご確認ください。
商品コードでCSVを照合し列を追加します(7,000円)