【Excel】ASC関数で英数カナを半角に変換し、文字列のまま値を貼り付ける方法

【Excel】ASC関数で英数カナを半角に変換し、文字列のまま値を貼り付ける方法
🛡️ 超解決

ExcelのASC関数は、全角の英数字やカタカナを半角へ揃える文字列関数です。例えば「AB001」を「AB001」、「サトウ」を「サトウ」へ変換できます。顧客コードや読みの列を、受け渡し先が指定する表記へ整えるときに使います。

ASCは、数字に見える文字を計算用の数値へ変える関数ではありません。「00123」を半角にした結果は文字列の「00123」です。この記事では、元の読みやコードを残しながら別列で変換し、確認した結果を値として確定する手順を説明します。

ADVERTISEMENT

1. ASCで変わるのは文字幅で、読みや数値の意味ではない

構文は=ASC(文字列)です。変換したい文字列を直接指定するか、その文字が入ったセルを指定します。対象となる全角文字がなければ元の文字列が返ります。日本語環境で使う際も、漢字やひらがなまですべて半角になるという意味ではありません。

「佐藤」という漢字を渡しても、「サトウ」という読みを作ってくれるわけではありません。半角カナの読みを用意したい場合は、既に読みが入っている列を変換します。セルに保存されたふりがなを取り出すPHONETIC関数と、文字幅を変えるASC関数は役割が違います。名前の読みは本人の申告や元資料で確認してください。

コードにも同じ考え方が当てはまります。「00123」を「00123」に揃えても、「123」と同じ識別番号にまとめてよいとは限りません。先頭0が意味を持つ会員番号、郵便番号、部品番号は、計算しない文字列として保持します。見た目を半角にする処理と、数量や金額を数値化する処理を混ぜないことが重要です。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. 元の列を残してASCを入力する

作業前にブックのコピーを保存します。例としてA1を「元データ」、B1を「半角確認用」とし、入力前にA2:A4の表示形式を「文字列」にします。その後、A2に「00123」、A3に「AB001」、A4に「サトウ」を入力します。数式を入れるB列は「標準」のままにし、元からある列を上書きせずに作業します。

  1. B2に=ASC(A2)と入力してEnterを押します。
  2. B2を含むB2:B4を選び、Ctrl+Dで下方向へ式をコピーします。
  3. B3の式が=ASC(A3)、B4が=ASC(A4)になっているか確認します。
  4. A列とB列を並べ、先頭0、英字、読みの表記を照合します。

フィルハンドルでコピーしても構いませんが、ダブルクリックによる自動入力は隣接データの入り方に影響されます。途中に空欄がある名簿では、必要な最終行を指定してコピーした方が範囲を把握できます。Ctrl+Dは、式の入った先頭セルを含めて下の範囲も選んでから使う操作です。

全角数字のコードは半角の00123、全角英数字のコードは半角のAB001、サトウはサトウへ変換され、佐藤は佐藤のまま。00123は先頭0を含む5文字でISTEXTがTRUE、ISNUMBERがFALSE。
ASCは英数カナの文字幅を変えます。コードの先頭0を残し、数値化や漢字の読みの作成とは分けて扱います。

空欄を明示的に空表示のまま扱う場合は、=IF(A2="","",ASC(A2))とする方法があります。この式が返す""は空の文字列で、セルから内容を消した本当の空白とは違います。受け渡し先が空欄をどう扱うかも確認しましょう。

3. 先頭0と文字列のまま保持されていることを確認する

B2の表示が「00123」になったら、数字が5文字あることを見ます。さらに別セルの=ISTEXT(B2)がTRUE、=ISNUMBER(B2)がFALSEになることで、数値ではなく文字列であることを確認できます。=LEN(B2)は5です。左寄せか右寄せかだけでは、配置を手動設定したセルを判別できません。

元データが既に数値123で、表示形式だけで「00123」と見せている場合は別です。ASCは表示形式を引き継いで桁を補うための関数ではありません。入力時に失われた先頭0をASCで復元することもできないため、元のコード体系と正しい桁数を照合します。桁が決まっているか分からないまま0を足してはいけません。

「半角にすれば検索結果が必ず一致する」という保証もありません。前後の空白、別種類のハイフン、数値と文字列の違い、重複コードなどは別に残り得ます。検索が合わない場合は、まず変換後のコードと検索先の保存値を比較してください。見つからないという理由だけで、両方を強制的に数値化すると別のコードを同一にしてしまう危険があります。

4. 確認した結果を値として確定する

B列にはまだA列を参照する式が入っています。受け渡し用に固定したい場合は、別の出力列へ値として貼り付けます。先にA列を削除してしまうと、式が参照できなくなるので順序に注意します。

  1. C1を「半角確定」とし、B2:B4をコピーします。
  2. C2を選び、「ホーム」の貼り付けメニューから「値」を選びます。Windows版ではCtrl+Alt+Vで「形式を選択して貼り付け」を開き、「値」を選ぶ方法もあります。
  3. C2を選択し、数式バーに=ASC(A2)ではなく「00123」が表示されるか確認します。
  4. C列でも先頭0と文字列判定を確認します。元データとの行数、コードと読みの対応も照合します。

値になればA列を変更してもC列は更新されません。変換式を残すB列と、確定値を持つC列を分けておくと、差分を確認できます。元の列へ書き戻す必要がある場合も、この確認後にコピーを残したうえで実行してください。作業列を削除する前には、ほかの数式がその列を参照していないか見直します。

貼り付けを間違えた直後なら「元に戻す」を使えます。保存して閉じた後など、取り消しで戻せない場合は変更前のコピーから復元します。ASCの結果に全角化する関数をかけても、元から半角だった部分まで変わるため、元の表記の完全な復元にはなりません。

5. 読みの列と氏名・商品名の列を混ぜない

半角カナを求められる読みの列にはASCが適していますが、氏名や商品名の正式表記を同時に変えてよいとは限りません。「サトウ」という読みは半角化しても、商品名の「サービスA」を勝手に「サービスA」へ変えてよいかは別の判断です。

特に「住所の数字だけ半角にしたい」「商品名のカタカナは全角のまま残したい」という用途では、ASCをセル全体にかけると変更範囲が広過ぎます。数字の列を分けて処理するか、対象文字だけを置換する方法を検討します。この目的のために、必ずVBAや正規表現を導入しなければならないわけではありません。

読みをPHONETICで取り出す場合も、その関数は保存されているふりがな情報を使います。外部から取り込んだ文字に正しい読みが含まれているとは限りません。読みを確認してから幅を揃え、変換したから読みも正しいという扱いにしないようにします。

6. 空白や改行は必要なものだけ取り除く

ASCを使っても検索が合わない場合、前後の空白や改行が原因のことがあります。ただし、最初からすべての名簿に=TRIM(CLEAN(ASC(A2)))を適用するのは避け、何が不要なのかを確かめます。氏名や名称の区切りとして意図した空白・改行もあるためです。

TRIMは主に半角スペースを整理し、語の間の連続スペースも1つにします。CLEANが主に対象とするのはASCIIコード0〜31の制御文字です。改行を除けば前後の語がつながる場合があります。また、これらだけですべてのUnicodeの空白や不可視文字が消えるわけではありません。

例えば「AB」と「001」の間に業務上意味のある空白があるなら、文字数やコード仕様を確認してから処理を決めます。取り込み先が拒否した行だけを確認用に抜き出し、対象文字が判明した段階で置換する方が、列全体を無条件に整形するより誤変換を防げます。

7. 半角化と値の確定を別々に点検する

ASCは英数カナの文字幅を揃え、値の貼り付けは計算結果を固定します。この二つを組み合わせても、数値化、読みの推定、全種類の表記ゆれ解消まで済むわけではありません。コードの先頭0、読みの正しさ、変更してはいけない文字を確認し、元の列を残して進めましょう。

仕様はMicrosoftのASC関数、PHONETIC関数、数式を結果で置き換える方法で確認できます。空白整理はTRIMとCLEANの対象も確かめてから追加してください。

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】