[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『同じ文字列で一致しない理由』(テラ)
お世話になります。
マクロや関数で文字列や数値を参照・比較するのですが
形式等一致しているのに参照されません。
調べていると、元のデータがCSVファイルから文字・数値を別のブックへコピーペーストして比較しているのが悪さをしていそうなことが分かっています。(ペーストした文字を比較元データとすると動きますが、手打ちの文字だと表示されません)
この場合手打ち文字とコピーした文字列を一致させる方法を教えてくれませんでしょうか?
参考になるか分かりませんが、元のマクロを下記に貼っておきます。
Dim 検索値() As Variant Dim 検索範囲() As Variant 検索値 = Worksheets("参照").Range("D2:D112").Value 検索範囲 = Worksheets("元").Range("A2:AE10001").Value Dim ary() As Variant ReDim Preserve ary(1 To UBound(検索範囲), 1 To UBound(検索範囲, 2)) Dim myDic As Object Set myDic = CreateObject("scripting.dictionary") Dim i As Long, j As Long, k As Long For i = 1 To UBound(検索値) myDic(検索値(i, 1)) = i Next For i = 1 To UBound(ary) If myDic.Exists(検索範囲(i, 2)) Then k = k + 1 For j = 1 To UBound(ary, 2) ary(k, j) = 検索範囲(i, j) Next End If Next Worksheets("結果").Range("A2").Resize(k, UBound(ary, 2)).Value = ary
< 使用 Excel:Excel2019、使用 OS:Windows10 >
理屈としてですが、
文字長、文字型、一文字毎の文字コード を調べれば、何が違うのか判明するハズです。
その調査をするのが確実です。 当てずっぽうで原因を考えるのは時間の浪費になることが多いです。
>この場合手打ち文字とコピーした文字列を一致させる方法 上の調査で何が違うのか分かる訳ですから、 悪さをしている方の文字を悪さしなかったものに変更する、と言う段取りになります。
(半平太) 2021/02/01(月) 23:25
(テラ) 2021/02/02(火) 01:00
>文字コードの判定というのは関数で言うCODE・UNIKODEを使った分析のような形になりますか?
UNICODEが絡む場合はそうですが、 通常は当該2つのデータをワークシート上に並べて、関数で判定していますけども。(私は、ですが)
(1) C2セル =ISBLANK($B2) (2) D2セル =LEN($B2) (3) E2セル =TYPE($B2) (4) F2セル =CODE(MID($B2,COLUMN(A1),1)) これを右にコピー
<見比べ表 結果図> 行 _____A_____ ___B___ __C__ ___D___ _E_ _F_ _G_ ___H___ ___I___ ___J___ 1 データ 空白 文字長 型 c1 c2 c3 c4 c5 2 正しい ab FALSE 3 2 97 98 32 #VALUE! #VALUE! 3 悪さされた ab FALSE 2 2 97 98 #VALUE! #VALUE! #VALUE! 4 5 正しい 1234 FALSE 4 2 49 50 51 52 #VALUE! 6 悪さされた 1234 FALSE 4 1 49 50 51 52 #VALUE! 7 8 9 正しい 0123 FALSE 4 2 48 49 50 51 #VALUE! 10 悪さされた 123 FALSE 3 1 49 50 51 #VALUE! #VALUE!
(半平太) 2021/02/02(火) 10:05
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.