口座名義に使える文字は「全銀協パーソナル・コンピュータ用標準通信プロトコル(ベーシック手順)」で決められていて、以下の様になっています。
- 大文字の英字
- 数字
- 半角カタカナ(っ、ゃ、ょなど小文字は使用不可)
- 一部の記号(()-./『スペース』)
- 40文字まで
振込業務を行うと振込先で困るのが口座名義です。漢字やひらがなが使えないのですが堂々と漢字やひらがなを記載してくる方が少なくありません。
まとめて振込先がくると一つ一つチェックしていては漏れが発生するのでスプレッドシートの機能を使ってチェックできると効率的で漏れもありません。
今回はスプレッドシートで口座名義が使用可能な文字だけで記載されているかをチェックする方法について説明します。
※注意:上記は全銀協パーソナル・コンピュータ用標準通信プロトコル(ベーシック手順)で規定されている制限です。ネットバンキングのクライアントによっては全角も受付とかあります。内部で変換しているかと思いますが、お使いのネットバンキングアプリを確かめて対応してください。
スプレッドシートで口座名義の使用文字を確認するアルゴリズム
下記の文字種のみ含まれていることを確認すればよいわけです。
- 大文字の英字
- 数字
- 半角カタカナ(っ、ゃ、ょなど小文字は使用不可)
- 一部の記号(()-./『スペース』)
今回は上記の文字種があれば口座名義から対応する文字を削除していき、最終的に何も残らなければ『OK』、1文字以上残れば『NG』と判定するようにしました。
また、40文字も判定するようにしました。
これらの制限は取引のある銀行によって相違ある場合がありますので必ず確認してください。今回はあくまでも全銀協のフォーマットに準拠して行っています。
テスト用データについて
口座名義サンプル | 説明 | 使用可能文字? |
ABCDEFG | 半角英字 大文字 | 〇 |
abcdefg | 半角英字 小文字 | ✖ |
ABCDEF | 全角英字 大文字 | × |
abcdefg | 全角英字 小文字 | ✖ |
123456 | 半角数字 | 〇 |
123456 | 全角数字 | × |
アイウエオヲパビ | 半角カタカナ 大文字 | 〇 |
ァィゥェォッ | 半角カタカナ 小文字 | × |
アイウエオヲパビ | 全角カタカナ 大文字 | × |
ァィゥェォッ | 全角カタカナ 小文字 | × |
あいうえお | 全角ひらがな 大文字 | × |
ぁぃぅぇぉ | 全角ひらがな 小文字 | × |
()-./ | 半角記号 — 先頭にスペースあり | 〇 |
!”#$% | 半角記号 | × |
()-./ | 全角記号 — 先頭にスペースあり | × |
!”#$% | 全角記号 | × |
唖拭丐漾槇 | 漢字 | × |
全ての文字種を網羅するようにサンプルデータを作成しました。使用可能文字で〇が使用可能、×が使用不可の文字種となります。
文字種の判定方法
大文字の半角英字を判定する
今回は文字種を判定するのにスプレッドシート特有の関数であるREGEXREPLACE関数を使用します。
REGEXREPLACE関数は正規表現を利用してテキスト文字を置換できる関数です。
つまり、大文字の半角英字があれば該当の文字を削除するように関数を以下のように設定します。
=REGEXREPLACE($A2,"[A-Z]+","")
上記の式は文字コードで連続する『A』から『Z』の文字があれば削除(空白『””』と置換)します。
上記が関数を実行した結果で、半角英字の大文字のみが削除されています。
半角数字を判定する
半角数字があれば該当の文字を削除するように関数を以下のように設定します。
=REGEXREPLACE($A2,"[0-9]+","")
上記の式は文字コードで連続する『0』から『9』の文字があれば削除(空白『””』と置換)します。
上記が関数を実行した結果で、半角数字のみが削除されています。
半角カタカナ 大文字を判定する
半角カタカナ 大文字は文字コードが『ア』~『゚』と『ヲ』が連続していないため以下の2つの式に分けて行います。
=REGEXREPLACE($A2,"[ア-゚]+","")
=REGEXREPLACE($A2,"[ヲ]+","")
上記が関数を実行した結果で、D列は半角カタカナで『ヲ』以外の大文字のみ、E列は『ヲ』が削除されています。
記号を判定する
使用可能な半角記号『 ()-./』は文字コードが3つに分断されていますので以下の様に3つの式に分けて行います。
=REGEXREPLACE($A2,"[(-)]+","")
=REGEXREPLACE($A2,"[\--/]+","")
=REGEXREPLACE($A2,"[ ]+","")
上記の2つめの式で『¥』とあるのは範囲を示すメタ文字『-』と文字である『-』が同じなので文字あることを示すエスケープシーケンスと呼ばれる文字です。
上記が関数を実行した結果で、F列は半角記号『()』、G列は『./』、H列は『 』(スペース)が削除されています。
式の統合
上記の7つの式を1つに統合すると以下の様になります。
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE($A2,"[A-Z]+",""),"[0-9]+",""),"[ア-゚]+",""),"[ヲ]+",""),"[(-)]+",""),"[\--/]+",""),"[ ]+","")
使用可の文字種のみで記載された口座名義は全て削除されますので、文字数は0となります。使用不可の文字種が含まれた口座名義は削除されない文字が残りますので1以上の文字数となります。
さらに口座名義の文字数が40文字を超えているかどうかを判定も行う必要があります。
以下の式となります。
=IF(LEN($A2)>40,"NG",
IF(LEN(
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(REGEXREPLACE($A2,
"[A-Z]+",""),
"[0-9]+",""),
"[ア-゚]+",""),
"[ヲ]+",""),
"[(-)]+",""),
"[\--/]+",""),
"[ ]+","")
)>0,"NG","OK"))
数式の可視性を上げるために改行を入れました。
最初のIF文では40文字を超えるかどうかを判定しています。2番目のIF文では使用不可の文字が使われているかどうかの判定を行っています。
コメント