xobQuery+Excel:異なるバイト文字の存在をチェックする

全体の文字/バイト数を比較する。

値のチェックは、前回記事のように中間処理を設けるのが適当です。必要な情報は、対象となる値の文字列数バイト数の 2つ。――そこに差があれば、全角と半角の入り交じりは確定し‥‥その比較結果を保持する為に、1列だけ変数項目(お皿)を用意しなければなりませんね。

制御シート(生成~抽出)

f:id:xoblos:20180405113953p:plain

雛形シート上に 1列(上図の列「B」)、そのお皿なる列を設けておきましょう。Excel 関数「LEN」は、対象(上図の列「A」)の文字の桁数を得ます。逆に Excel 関数「LENB」は、対象の文字のバイト数を得ます。Excel 上で、半角文字(半角カナを含む)は 1バイト、全角文字は 2バイトで数えます。これで列「B」も抽出に含めれば、条件付けすることができますね。

‥‥しかし残念なことに、バイト数を取り扱う関数(「LENB」「MIDB」「FINDB」「SEARCHB」等)は、現在の抽出高速エンジンには対応していません。(生成高速エンジンで出力することはできますが、それを正しく抽出できません。)処理速度が遅くなっても良い場合は、お勧めする方法です。

xobQuery

f:id:xoblos:20180405114001p:plain

SQL に慣れている方には、上図方法をお勧めします。xobQuery は XML to XML なので、中間処理としましても 1手順で済みます

構文「HEX」は、括弧内の文字列の文字コードを 16進数で返します。半角文字(半角カナを除く)は、一文字につき 16進数コードで 2桁を表します。その為、「2」で除算しています。半角のみなら文字列数とマッチしますし、全角が混在していればマッチしません。