
この記事は『文字数を数える関数はExcelとACCESSで結果が異なる』の後編になります。
パソコン関係では、
半角文字を1バイト、全角文字を2バイトとカウントします。
バイト数を数える関数は、『=LENB()』(EXCELやACCESSでは。)
この関数、確かにEXCELでは正しく動くのですが、ACCESSでは、半角全角を問わず、一文字を全角(=2バイト)として結果を返してきます。
これでは困るのだ・・・。
ググってみました(^^)
結論として・・・、
Unicode と ANSIAccess2000からUnicodeが採用されました。これは、全ての文字(全角、半角、漢字)を2バイトであらわします。逆に、ANSI形式は、全角文字と漢字は2バイト、半角文字は1バイトで表します。
Access2000以降のLenB関数よく、解説書で「LenB関数は、半角なら1バイト、全角なら2バイトで戻り値を返します」と記載されていますが、Access2000以降、この記述は誤りです。
しかし、Unicode形式の文字をANSI形式の文字を変換する関数が用意されているので、これを利用すると無事うまくいきます。
***以上は、Microsoft Access Clubの『Len関数 と LenB関数 : 一日一見』より転載しました。***
なるほど。
一旦文字列を、Unicode形式からANSI形式へと変換する必要があるのですな。
それには、StrConv関数を用いると。
ありがとうございました。
今、川中のACCESSファイルでは、下記の関数が活躍しています。
LenB(StrConv([フィールド名],128))
話の発端は、
60バイトを越えるデータが、別のDBへのインポートの際にエラーになるのでこれを防ぎたい。
そのためにはまず、60バイトを越えるデータをピックアップ・・・。
と言うところまでは上手く動いています。
さて、次なる希望です。
60バイトを越えるデータ、川中の場合は文字列なのですが、このデータを60バイト以下に自動で縮めて欲しい・・・(^^ゞ
出来るかな?
(昔、長い文章を要約してくれるソフトがあったことを思い出します。)
必要は発明の母。
また、考えてみましょう。
なんとかなるかな・・・???
写真は、確定申告の時期の差し入れの一枚。
ありがとうございましたm(__)m
助成金・給与計算・社会保険のご相談なら鯖江の税理士法人川中経営
税理士・ITコーディネータ 川中重司
ではどうする:文字数を数える関数はExcelとACCESSで結果が異なる。