2018年10月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

« 【切り抜き】公文書改ざん、加計問題、日報隠し 「倒閣」だけでは解決せず 東浩紀さんに聞く(毎日) | トップページ | 【きょうの調べ物】狂犬病予防法と動愛法~小樽市の問題にふれて »

2018年4月19日 (木)

CSVEX (VBA)をリリース & vbTextCompareとvbBinaryCompare

昨日、CSVEX (VBA)をリリースしました。
http://egotadp.biz/products/CSVEX/index.htm

CSVファイルをExcelのシートに貼り付けるツールです。
シフトJISとUTF-8、LfとCrLfに対応しています。
Windows7(32)+Excel2010(32)とWindows10(64)+Excel2010(64)で確認しています。

Csvex_ss_50pc


###

ところで、なかでInstr関数やSplit関数を使っているのですが、文字列の比較の方法を指定するパラメタがあります。これまで、特に考えなしにvbTextCompareを使っていたんですが、大量データでテストしていたら、なぜか途中でずれる。

▼使ったデータ
事業所の個別郵便番号データ (郵便局)

ずれる箇所はすぐ特定できました。200行目の「北海道いすゞ自動車」です。

Img035_50pc

どうも踊り字の「ゞ」が原因のようです。文字列の比較の方法の違いは読んだことがあったのですが、

・vbTextCompare:「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別しない。

・vbBinaryCompare:「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。

区別するもしないも、何番目に出現するのか、で何を区別するの? とおもって「する」より「しない」ほうが、多少は効率がいいんではないの? ぐらいの気持ちで前者を使ってました。

ところが、上図のように実験してみると、

20180419_192029

のように、違いが出ました。「ゞ」は、見た目は全角の文字です。

20180419_191605

シフトJISなら0x8155、内部ではUnicodeで処理されているはずですが、その場合もU+309E。半角と全角を区別するも何もないはずです。試しに「ゝ」で試してみると、

20180419_192137

こちらは違いが出ない。

原因はわからないのですが、vbTextCompareだと「ゞ」を「ゝ」+「゛」の2文字分カウントとしているようです。なぜだ。

であれば「ズ」(全角1文字)や「ズ」(半角2文字)でも違いが出るような気がするのですが、出ません。同じ踊り字の「ヾ」も「ヽ」+「゛」の2文字分カウントされてます。

まあ、vbBinaryCompareを指定すれば何ら問題ないので、解決なんですが、どういうことなんでしょう。

« 【切り抜き】公文書改ざん、加計問題、日報隠し 「倒閣」だけでは解決せず 東浩紀さんに聞く(毎日) | トップページ | 【きょうの調べ物】狂犬病予防法と動愛法~小樽市の問題にふれて »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/602969/66628577

この記事へのトラックバック一覧です: CSVEX (VBA)をリリース & vbTextCompareとvbBinaryCompare:

« 【切り抜き】公文書改ざん、加計問題、日報隠し 「倒閣」だけでは解決せず 東浩紀さんに聞く(毎日) | トップページ | 【きょうの調べ物】狂犬病予防法と動愛法~小樽市の問題にふれて »

無料ブログはココログ

最近のツイート