Excelでは、バーコード用フォントと関数を組み合わせることで、商品コードや管理番号をバーコード表示へ変換できます。
少量のデータならセルに数式を入力する方法が扱いやすく、大量の商品一覧ではオートフィルやVBAを使った一括作成が便利です。
ただし、バーコードには種類ごとのルールがあり、単純に数字へフォントを設定するだけでは読み取りできない場合があります。
Excelでバーコードを作る主な流れは、バーコード規格を決め、元データを用意し、チェックデジットを計算してから対応フォントを適用することです。
この記事では、Code 39、Code 128、JANコードを意識しながら、関数、フォント、マクロによるバーコード作成手順を解説します。
まずは、用途に合う作り方を確認していきましょう。
エクセルでバーコードを作る基本手順
| 商品名 | 商品コード | バーコード表示 |
|---|---|---|
| ノート | 490123456789 | *490123456789* |
| ペン | 490987654321 | *490987654321* |
それではまず、エクセルでバーコードを作る基本手順について解説していきます。
バーコードは見た目だけではなく、規格に合った文字列を作ることが読み取り精度を左右します。
バーコード規格の選択
バーコードを作成する前に、読み取り機器や取引先が対応する規格を確認します。
社内備品や棚番の管理では英数字を扱いやすいCode 39、複数の文字を効率よく扱う業務用途ではCode 128が候補になります。
市販商品の流通ではJANコードやEANコードが一般的ですが、正式な商品識別子として利用する場合は事業者コードなどの取得手続きも必要です。

既存の番号を単にバーコード化するのか、販売用の正式なJANコードを発番するのかで準備が変わります。
社内管理では、重複しない独自の連番を採番して使う方法も実務的です。
元データの入力
サンプルデータでは1行目を見出しとし、A列に商品名、B列に元となる商品コードを入力します。
商品コードの先頭にゼロが入る場合は、B列を文字列形式に設定してから入力しましょう。
数値形式のまま入力すると、先頭のゼロが自動的に削除され、バーコードの桁数が変わる原因になります。

コード列は文字列として管理すると、桁数の保持とコピー時の誤変換を防ぎやすくなります。
元データとバーコード用の文字列は同じ列に混在させず、C列以降へ分けると確認しやすくなります。
フォント適用前の確認
バーコードフォントは、文字列を縦線の模様として表示する仕組みです。
そのため、フォントを適用する前のセルには、人が読める元の文字列を残しておくことが大切です。
印刷後の照合や、スキャナーで読み取れないときの原因確認にも役立ちます。
バーコード列とは別に、商品コード列、規格列、印刷確認列を用意すると、複数規格を扱う台帳でも管理しやすくなります。
まずは少ない件数で印刷テストを行い、実際のバーコードリーダーで読めることを確認しましょう。
【操作のポイント】元データは文字列形式で入力し、バーコード表示用の列を別に作成します。
Code 39フォントと関数による作成
| A列 商品名 | B列 元コード | C列 Code 39用文字列 |
|---|---|---|
| ノート | NOTE001 | *NOTE001* |
| ペン | PEN002 | *PEN002* |
続いては、Code 39フォントと関数による作成を確認していきます。
Code 39は英大文字、数字、一部の記号を扱えるため、棚番や資産管理番号などに利用しやすい規格です。
開始記号と終了記号の付加
多くのCode 39フォントでは、データの先頭と末尾にアスタリスクを付けて開始位置と終了位置を示します。
C2セルへ次の数式を入力します。
=”*”&B2&”*”
この数式はB2の文字列の前後へアスタリスクを連結する内容です。
たとえばB2がNOTE001なら、C2には*NOTE001*と表示されます。

数式を入力後、C2セルの右下にあるフィルハンドルを下方向へドラッグすると、2行目以降にも同じ規則を適用できます。
Code 39では小文字が利用できないフォントが多いため、元コードは大文字へ統一するのが安全です。
大文字変換と入力エラー対策
元データに小文字が混じる可能性がある場合は、UPPER関数を組み合わせます。
=”*”&UPPER(B2)&”*”
UPPER関数は、B2の英字を大文字へ変換してから開始記号と終了記号を付けます。
空白や使用できない記号が含まれると読み取りに失敗することがあるため、元データの表記ルールも決めておきましょう。

英字、数字、ハイフンなどの使用可否は、導入したバーコードフォントの説明書で必ず確認します。
セルの表示形式ではなく、実際の値を確認するには数式バーを見る方法が有効です。
バーコードフォントの設定
C列を選択し、ホームタブのフォント一覧からインストール済みのCode 39対応フォントを選択します。
バーの太さや読み取りやすさを確認しながら、フォントサイズは24ポイントから36ポイント程度を目安に調整します。
印刷するラベルの大きさに合わせ、列幅と行の高さも広げると見切れを防げます。
バーコードの上下左右には余白が必要です。
隣の罫線、文字、画像がバーに近すぎると、リーダーが開始位置や終了位置を判定しにくくなる場合があります。
画面上で正しく見えても、実機のバーコードリーダーで読み取れるかを必ず検証します。
【操作のポイント】Code 39では前後のアスタリスクと大文字変換を確認してからフォントを適用します。
Code 128フォントによる連番バーコード
| A列 商品名 | B列 商品コード | C列 連番 | D列 バーコード用 |
|---|---|---|---|
| ノート | 490123456789 | 1 | 変換後文字列 |
| ペン | 490987654321 | 2 | 変換後文字列 |
続いては、Code 128フォントによる連番バーコードを確認していきます。
Code 128は高密度なバーコード規格で、数字や英数字を効率よく表現できる特徴があります。
Code 128はチェックサム計算と開始コードの扱いが必要になるため、単純な文字連結だけでは作成できないフォントがあります。
Code 128用フォントの仕様確認
Code 128対応フォントには、専用のエンコーダー関数を付属する製品があります。
この場合は、フォントだけを変更するのではなく、配布元が指定する関数、アドイン、またはVBA関数で文字列を変換します。
Code Set Bは一般的な英数字を扱いやすく、Code Set Cは偶数桁の数字を効率よく圧縮できる方式です。
商品コードが数字だけの場合でも、フォントごとの変換仕様を確認して選択しましょう。
連番の数式作成
社内管理用の連番を作るなら、C2セルへ次の数式を入力します。
=TEXT(ROW()-1,”000000″)
1行目を見出しとした場合、2行目ではROW関数が2を返すため、ROW()-1は1になります。
TEXT関数により、1は000001、2は000002のような6桁の文字列へ変換されます。
先頭セルへ数式を入れ、フィルハンドルを下へ引くと、連番をオートフィルできます。
この連番をCode 128エンコーダーへ渡すことで、重複しない管理バーコードの元データになります。
チェックサムを含む変換
Code 128のチェックサムは、開始コードと各文字のコード値に位置番号を掛けて合計し、103で割った余りを使う計算です。
チェックサム = 合計値を103で割った余り
文字種、開始コード、終止コードの扱いはフォントごとに異なるため、自作の単純な数式だけで対応するのは難しい場合があります。
実務では、利用するフォントに付属するエンコーダーを使うことが、最も確実な作成方法です。
変換済みの文字列をD列へ出力し、その列だけにCode 128フォントを適用します。
【操作のポイント】Code 128はフォント名だけで判断せず、専用エンコーダーとチェックサムの有無を確認します。
JANコードとチェックデジットの計算
| A列 JAN本体 | B列 チェックデジット | C列 完成コード |
|---|---|---|
| 490123456789 | 4 | 4901234567894 |
続いては、JANコードとチェックデジットの計算を確認していきます。
JANコードは日本で広く利用される商品識別用のバーコードで、通常は13桁で構成されます。
最後の1桁であるチェックデジットは入力ミスを検出する重要な数字です。
JANコードの桁構成
JANコードの13桁では、先頭12桁が本体コード、最後の1桁がチェックデジットです。
本体コードの奇数位置と偶数位置に異なる重みを掛け、合計から検査用の数字を求めます。
販売用の商品バーコードとして使う場合は、事業者コードの割り当てや登録ルールを確認する必要があります。
社内で練習用データを作る場合でも、実在の商品番号と混同しない番号を使用しましょう。
Excel関数による検査数字
A2に12桁の本体コードが文字列として入っている場合、チェックデジットは桁ごとの計算で求められます。
=MOD(10-MOD(SUMPRODUCT(MID(A2,ROW($1:$12),1)*IF(MOD(ROW($1:$12),2)=1,1,3)),10),10)
MID関数はA2から1文字ずつ取り出し、ROW関数は1から12までの位置番号を作ります。
IF関数は位置に応じて重み1または3を返し、SUMPRODUCT関数が各桁と重みの積を合計します。
最後にMOD関数で10の倍数までの差を計算し、チェックデジットを得る仕組みです。
数式を入力する前に、A列が数値ではなく12桁の文字列として保持されているかを確認します。
完成コードと印刷確認
C2には、本体コードとB2のチェックデジットを連結します。
=A2&B2
完成した13桁の値をJAN対応の生成ツールまたは対応フォントへ渡して表示します。
JAN用のフォントでは、数字列に加えてガードバーや左右の余白を規格どおりに表示する機能が必要です。
一般的なCode 39フォントへJANコードの数字を入力しても、正式なJANバーコードにはなりません。
【操作のポイント】JANコードは12桁の本体コードとチェックデジットを分け、完成後に桁数を再確認します。
VBAによるバーコードの一括作成
| A列 商品名 | B列 商品コード | C列 バーコード文字列 |
|---|---|---|
| ノート | NOTE001 | *NOTE001* |
| ペン | PEN002 | *PEN002* |
続いては、VBAによるバーコードの一括作成を確認していきます。
数百行から数千行のデータでは、数式のコピーよりもVBAで処理を自動化すると作業時間を短縮できます。
マクロ作成前の準備
作業前に元のブックを複製し、マクロ有効ブック形式で保存します。
AltキーとF11キーを押してVBEを開き、標準モジュールへコードを貼り付けます。
ここでは1行目を見出しとし、B列の商品コードをC列のCode 39用文字列へ変換します。
マクロは信頼できる作成者の内容だけを実行し、処理前にバックアップを保存します。
Code 39用文字列の一括生成
Sub CreateCode39()
Dim lastRow As Long
Dim r As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
For r = 2 To lastRow
Cells(r, "C").Value = "*" & UCase(Cells(r, "B").Value) & "*"
Next r
Columns("C").Font.Name = "Free 3 of 9"
Columns("C").Font.Size = 28
End Sub
lastRowはB列の最終入力行を取得し、2行目から最終行までを繰り返します。
UCase関数により小文字を大文字へ変換し、前後へアスタリスクを追加します。
最後にC列へバーコードフォントと文字サイズを設定する流れです。
実行後の照合
マクロ実行後は、元コードが空白の行に不要な記号が出ていないかを確認します。
必要であればIf文で空白セルを除外し、バーコード列が空欄になるように調整しましょう。
印刷前には、元コード、変換後文字列、読み取り結果を別列に記録すると、誤読や再印刷の原因を追跡しやすくなります。
一括作成後も、先頭行、中間行、最終行をバーコードリーダーで試験することが重要です。
【操作のポイント】VBAでは最終行の取得対象を元データ列にし、処理後に空白行と読み取り結果を確認します。
まとめ エクセルでバーコードを作成する方法
| 用途 | 向く方法 | 確認事項 |
|---|---|---|
| 少量の社内管理 | Code 39と関数 | 開始記号と終了記号 |
| 大量データ | VBAによる一括作成 | バックアップと実機検証 |
| 商品流通 | JAN対応の作成方法 | チェックデジットと登録情報 |
Excelでバーコードを作成する方法は、用途に合う規格を選び、元データを文字列として整えることから始まります。
Code 39では前後の開始記号と終了記号を付け、対応フォントを適用すると基本的な社内管理用バーコードを作成できます。
Code 128ではエンコーダーとチェックサム、JANコードでは規格に沿ったチェックデジットの計算が必要です。
バーコードは表示できた時点で完成ではなく、実際の印刷物をリーダーで読み取って初めて運用できる状態になります。
件数が多い場合はVBAで一括生成し、元コードと変換結果を別列で残すと管理しやすくなります。
用途、フォントの仕様、印刷サイズ、読み取りテストを順番に確認し、正確なバーコード運用へつなげましょう。