[[20180915130930]] 『認識しないスペースを置換したい』(はた) ページの最後に飛ぶ

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

 

『認識しないスペースを置換したい』(はた)

セル内に見た目2個のスペースが入っています。
当データはWEBページから取得されたものです。

※TRIMやCLEANで消去できないので、何か変な文字が入っている
と考えています。

A空白空白B
C空白空白D
E空白空白F

となっているので、
これを

A/B
C/D
E/F

と置換したいのですが・・・。

1)エクセルの"検索と置換"機能で、該当のスペースをこぴぺして置換する
全角、半角いずれも試しています。
2)VBAでreplace関数を使う

ってもだめでした。

知恵をお借りできないでしょうか。

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


 ご提示の文字列がA1セルに入力されてるとしたら以下の式をC1セルに入力して、右にフィルコピーしたら
 それぞれどんな数値が表示されますか?

 =UNICODE(MID($A1,COLUMN(A1),1))

(sy) 2018/09/15(土) 13:32


 UNICODE関数使えない環境ならCODE関数で...
(白茶) 2018/09/15(土) 13:47

 たぶんtab?
 =SUBSTITUTE(SUBSTITUTE(A1,CHAR(32)&CHAR(32),CHAR(32)),CHAR(32),"/")
 とか?
(BJ) 2018/09/15(土) 13:54

 nbsp(CHAR(160))の可能性もあるかな? と...
(白茶) 2018/09/15(土) 13:56

 Crtl + H (置換)
 [検索する文字列]に
 Alt + 0160 <--- 数値はNumber Padから入力。ファンクションキーの下段からはダメ。
 [置換する文字列]は空白のままで[全て置換]

 で試して見てください。
(seiya) 2018/09/15(土) 14:03

 あ、すみません。
 CHAR(32) は、Tabじゃなく、半角スペースだった。
(BJ) 2018/09/15(土) 14:13

さっそく、ありがとうございます。

 =UNICODE(MID($A1,COLUMN(A1),1))

は、#name?のエラーが出て表示されませんでした。

=SUBSTITUTE(SUBSTITUTE(A1,CHAR(32)&CHAR(32),CHAR(32)),CHAR(32),"/")

も同じく、#name?でした。

それで、余計な文字を消去して、スペースだけ残して、

=CODE(A1)

としたところ、

32

と表示されました。

半角スペースということでしょうか?
(はた) 2018/09/15(土) 14:21


[置換する文字列]は空白のままで[全て置換]

"/"に置換したい場合は、"/"を入れるでよかったでしょうか?

Alt + 0160 <--- 数値はNumber Padから入力。ファンクションキーの下段からはダメ。

すみません、ノートPCしかなくて・・・・。
とりあえずやってみましたが、反応がありませんでした。
(はた) 2018/09/15(土) 14:24


あと、補足すると、

スペースが二つ入っているので、
ふつうは、右に2回矢印を押せば、右に2つ移動します。
しかし当セルでは、スペースとスペースの間で1回止まります。
もう一回、矢印を押すと右に移動します。

見た目スペースが2つにもかかわらず、
3回矢印を押さないと、二つ分移動しません。
スペースとスペースの間に見えない何かのデータが挟まってる感じです。
(はた) 2018/09/15(土) 14:36


 では尚更syさんの指示に従って文字コードを明確にすべきでしょう。
 UNICODE関数をCODE関数に代えて実施してみて下さい。

(白茶) 2018/09/15(土) 14:46


 見た目とかあまり使わない方がいいです。
 過去にも質問者側の見た目判断で、話がかみ合わなる場合が多いので。

 =Len(A1)

 とかで、文字数を確認されては?

 >=SUBSTITUTE(SUBSTITUTE(A1,CHAR(32)&CHAR(32),CHAR(32)),CHAR(32),"/") 
 >も同じく、#name?でした。

 これ、手入力ですか?
(BJ) 2018/09/15(土) 14:51

unicodeやcodeというものがあまり詳しくわかっていないのですが、

unicodeではエラーがでましたので
code関数で試してみました。

"文字列の先頭文字に対応する文字コードを返す。"

っていうことらしいのですが、

A1のセルに、2つのスペースだけを残して

=CODE(A1)

で、実行すると

32

が返されました。

それで、先頭文字のスペースを消去して実行すると

13

が返されました。

この13が意味するものはなんでしょうか?
(はた) 2018/09/15(土) 15:03


>=Len(A1)
 とかで、文字数を確認されては?

文字数が、1文字多いのを確認できました。

たとえば、

A半角スペース半角スペースB

となっているのですが、4が帰ってくるはずですが、

5となりました。

(はた) 2018/09/15(土) 15:12


 >syさんの指示に従って
 と申しましたよ^^;

 式は
 =CODE(MID($A1,COLUMN(A1),1))

 syさんは
 >右にフィルコピーしたら
 >それぞれどんな数値が表示されますか?
 と仰ってます。

 先頭から1文字ずつ取り出して
 それぞれの文字コードが何であるかを調べる為です。

(白茶) 2018/09/15(土) 15:17


 >すみません、ノートPCしかなくて・・・・。 
http://soft1.jp/trouble/w/w038.html

 >それで、先頭文字のスペースを消去して実行すると 
 >13 
 >が返されました。

 [検索する文字列]に Alt + 0013 で

 >"/"に置換したい場合は、"/"を入れるでよかったでしょうか?
 はい、その通りです。
 試してください。
(seiya) 2018/09/15(土) 15:18

 CHAR(13)
 CR (Carriage Return) キャリッジリターン

 =SUBSTITUTE(SUBSTITUTE(A1,CHAR(32),""),CHAR(13),"/")
(BJ) 2018/09/15(土) 15:25

 unicode関数は2013からしか使えませんでした。
 すいません。

 >先頭文字のスペースを消去して実行すると 
 >13 
 >が返されました。 
 >この13が意味するものはなんでしょうか?

 文字コード13はキャリッジリターンと言う改行文字です。
 テキストなどでは13がよく使われます。
 EXCELでは10のラインフィードと言うセル内改行が主流です。

 13の改行文字ならCLEAN関数で消せるので、
 =SUBSTITUTE(TRIM(CLEAN(A1))," ","/")
 としてみて下さい。

(sy) 2018/09/15(土) 15:29


すみません。。。

=CODE(MID($A1,COLUMN(A1),1))

は、"入力した数式は正しくありません"

となり、"$A1"にカーソルが指し示しますので、

"A1"に変更してみました。

すると、#NAME?

のエラーが表示されます。

(はた) 2018/09/15(土) 15:31


>[検索する文字列]に Alt + 0013 で

"一致するデータが見つかりません"

でした・・・。
(はた) 2018/09/15(土) 15:41


>=SUBSTITUTE(SUBSTITUTE(A1,CHAR(32),""),CHAR(13),"/")

#NAME? でした。

>=SUBSTITUTE(TRIM(CLEAN(A1))," ","/")

同じく#NAME? でした。

どうも、私のPCだけ動作が違うようなので、
明日違うPC(エクセル2013?)で試してみます。

(はた) 2018/09/15(土) 15:48


 ・なぞの空白が同じ文字で必ず2連続
 ・普通の文字に同じ文字が2連続以上していない

 のを条件として

 =REPLACE(A1,MATCH(TRUE,INDEX((MID(A1,ROW($1:$20),1)=MID(A1,ROW($2:$21),1)),),),2,"/")

 ※A1に対象データとしてま。
 ※実際が謎なので、ちゃんと機能するかわかりまへんが。
(GobGob) 2018/09/17(月) 18:01

コメント返信:

[ 一覧(最新更新順) ]


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