[[20150324122549]] 『文字列の確認』(ぴょん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『文字列の確認』(ぴょん)

とあるデータをコピーペーストして、エクセルで処理しているのですが
そのときに張り付けたデータの 「02:預り」 というデータと
打ち込んで作った 「02:預り」 がEXACT関数で調べると一致しません。

置換する時はxlPartで一部変換でどうにかなったのですが
Select Case文を使う時に認識しなくて困っています。

TRIM関数やJIS関数を使ってみたのですが同じで、空白らしいのも見当たりません
ただ、LEN関数を使うと張り付けたものは 「6」 で、打ち込んだものは 「5」 となっているため、何かしらの文字が入っているとは思うのですがそれもわからないのです

LEFT関数で左から3つをとってくると張り付けたものは 「02」 で打ち込んだものは
「02:」 なため、先頭に何かあると思うのですが取り除く、もしくは何があるか確認する方法はないでしょうか?

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 CLEAN関数で処理すると桁数はかわりますか?

(β) 2015/03/24(火) 12:48


変わりました!ありがとうございます!
(ぴょん) 2015/03/24(火) 12:49

先頭に、改行コードとか、見えない1文字があるのでしょうね。
以下を実行してみて、文字コードから原因文字を特定しておくと良いでしょう。

 Sub test()
    Dim i As Long
    Dim cw As String

    cw = Range("A1")

    For i = 1 To Len(cw)
        Debug.Print Hex(Asc(Mid(cw, i, 1))) & " ";
    Next i
 End Sub
(???) 2015/03/24(火) 12:53

丁寧にマクロまでありがとうございます!
試してみます!
(ぴょん) 2015/03/24(火) 13:01

重ね重ね質問すみません。先ほどのマクロを動かしてイミディエイトで確認してみたのですが

1F 30 32 3A 9761 82E8

1F が先頭の文字だとは思うのですがこれは改行コードなのでしょうか?
あともし改行コードならマクロで置換して空白に変える場合はどうするのでしょうか?
vbLfとvbCrLfを試したのですがうまくいきませんでした
(ぴょん) 2015/03/24(火) 14:06


 変換だけなら

 その文字列 = WorksheetFunction.Clean(その文字列)

 これでOKだと思います。

(β) 2015/03/24(火) 14:22


改行に使われるコードは、CR+LF(0d 0a)ですね。どちらか一方だけの場合もあります。
1fはユニット区切り(US:Unit Separator)と呼ばれるものですが、使っているのを見たことがないです…。

文字コード体系が違うものから貼り付けているとか、何か問題がありそうです。
(また新しいデータを貼り付けると、再発するという事)
元データを提供している部署に、問い合わせられないでしょうか。

Clean以外にも、処理する際に、以下のように消してしまう方法もあります。

    Range("B1") = Replace(Range("A1"), Chr(&H1F), "")
(???) 2015/03/24(火) 14:26

Replaceで置換しようとしてましたけど、素直にCleanで別セルに移したほうが早そうですね・・・
βさん、???さんありがとうございました!
(ぴょん) 2015/03/24(火) 14:37

 >Replaceで置換しようとしてましたけど、素直にCleanで別セルに移したほうが早そうですね・・・ 

 VBA で直接変換できると思いますが?

(β) 2015/03/24(火) 16:37


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.