Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2016)
文字鉄置換にワイルドカードは使えますか?
投稿日時: 19/01/10 15:27:49
投稿者: gorby

?は任意の数字と仮定します。
 
sheet上にANKデータが半角スペースを挟みながら、並んでいるのですが、
 
:?
 

 
.?
 
に一括変換できないでしょうか?
 
 
 
 
 

回答
投稿日時: 19/01/10 16:01:33
投稿者: Mike

=REPLACE(A1,FIND(":",A1),1,".")
で如何かと。
 
あ、一括変換?
=SUBSTITUTE(A1,":",".")
で如何かと。

投稿日時: 19/01/10 16:05:59
投稿者: gorby

Mike さんの引用:
=REPLACE(A1,FIND(":",A1),1,".")
で如何かと。
 
あ、一括変換?
=SUBSTITUTE(A1,":",".")
で如何かと。

 
すみません。
=SUBSTITUTE(A1,":",".")
だと、
NK:

NK.
に変換されてしまいませんか?あくまで:?のみ変換したいのですが、、、

回答
投稿日時: 19/01/10 16:54:08
投稿者: んなっと

B列に答え
           A          B          C          D E
1      8:r:21:059      8:r.21.059      8:r:21.059            
2 r2:pq:059 xd:9:d:15 r2:pq.059 xd.9:d.15 r2:pq:059 xd.9:d.15 r2:pq:059 xd:9:d.15  
 
B1
=IFERROR(REPLACE(IF(C1="",$A1,C1),AGGREGATE(15,6,ROW($1:$500)/(MID($A1,ROW($1:$500),1)=":")/ISNUMBER(1*MID($A1,ROW($1:$500)+1,1)),COLUMN(A1)),1,"."),"")
右方向・→下方向・↓

回答
投稿日時: 19/01/10 17:04:43
投稿者: WinArrow
投稿者のウェブサイトに移動

>あくまで:?のみ変換したいのですが
先頭の1文字が「:」ということ?

回答
投稿日時: 19/01/10 17:29:26
投稿者: Mike

gorby さんの引用:
あくまで:?のみ変換したい
:?の直前はどうなってンですか?“行き止まり”(行の左端)または半角スペース1個?
:?の直後はどうなってンですか?半角スペース1個または“行き止まり”(行の右端)?

回答
投稿日時: 19/01/10 20:41:01
投稿者: WinArrow
投稿者のウェブサイトに移動

↓こんなことかな?
=IF(NOT(ISERROR(VALUE(MID(A1,FIND(":",A1)+1,1)))),REPLACE(A1,FIND(":",A1),1,"."),A1)

回答
投稿日時: 19/01/10 20:56:22
投稿者: んなっと

数字の前の:は.に置換して、アルファベットや記号の前の:は置換せずにそのまま
ということですね。
 
      A      B
1 8:r:21:059 8:r.21.059

回答
投稿日時: 19/01/12 13:57:55
投稿者: んなっと

作業列無しだと相当長くなります。
 
           A          B
1      8:r:21:059      8:r.21.059
2 r2:pq:059 xd:9:d:15 r2:pq.059 xd.9:d.15
 
B1
=TEXTJOIN(".",TRUE,IFERROR(REPLACE(LEFT(A1,AGGREGATE(15,6,ROW($1:$500)/(MID(A1&":0",ROW($1:$500),1)=":")/ISNUMBER(1*MID(A1&":0",ROW($1:$500)+1,1)),COLUMN(A:Z))-1),1,TEXT(AGGREGATE(15,6,ROW($1:$500)/(MID(":0"&A1,ROW($1:$500),1)=":")/ISNUMBER(1*MID(":0"&A1,ROW($1:$500)+1,1)),COLUMN(A:Z))-2,"0;!0"),),""))
Ctrl+Shift+Enter同時押し
下方向・↓
 
追記:いきなり先頭がマッチする(:5から始まるなどの)ときうまくいきません。

回答
投稿日時: 19/01/13 07:45:44
投稿者: んなっと

これも。
 
B1
=TEXTJOIN(".",TRUE,IFERROR(REPLACE(LEFT(A1,AGGREGATE(15,6,ROW($1:$500)/ISODD(FIND(MID(A1&":0",ROW($1:$500),2),":0:1:2:3:4:5:6:7:8:9")),COLUMN(A:Z))-1),1,TEXT(AGGREGATE(15,6,ROW($1:$500)/ISODD(FIND(MID(":0"&A1,ROW($1:$500),2),":0:1:2:3:4:5:6:7:8:9")),COLUMN(A:Z))-2,"0;!0"),),""))
Ctrl+Shift+Enter同時押し

回答
投稿日時: 19/01/13 08:06:17
投稿者: んなっと

TEXTJOINが使えない環境の時は、作業列ありの方でお願いします。

回答
投稿日時: 19/01/13 17:04:11
投稿者: sy

単純に以下みたいなのじゃダメですか?

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,":0",".0"),":1",".1"),":2",".2"),":3",".3"),":4",".4"),":5",".5"),":6",".6"),":7",".7"),":8",".8"),":9",".9")

回答
投稿日時: 19/01/13 18:38:39
投稿者: んなっと

ああ、syさんの式の方が優れていますね。
私のはなしで。

回答
投稿日時: 19/01/18 20:35:59
投稿者: masExcel

推測ですっが、コメントで、スペースで区切られたとあります。
まずは、データの区切り位置で、スペースで、データを分割してから、置換を行い、そのたと、文字結合すれば良いのではと思います。
この手の文字列正規化処理は、さまざまな場合があり、一概にこれが、あれが、正解とは、実データを取り扱わないと判断ができませんが、なんでも関数でも良いですが、関数は難しいです。
まずは、機能で対応できるか検討してもよろしいかと思います。

回答
投稿日時: 19/01/18 21:00:13
投稿者: んなっと

このスレッドと同じ質問者ですね。
https://www.moug.net/faq/viewtopic.php?t=77741
 
「数字:数字」を「数字.数字」に一括置換したいという可能性もありますね。

投稿日時: 19/04/16 06:25:54
投稿者: gorby

Mike さんの引用:
=REPLACE(A1,FIND(":",A1),1,".")
で如何かと。
 
あ、一括変換?
=SUBSTITUTE(A1,":",".")
で如何かと。

投稿日時: 19/04/16 06:26:19
投稿者: gorby

gorby さんの引用:
?は任意の数字と仮定します。
 
sheet上にANKデータが半角スペースを挟みながら、並んでいるのですが、
 
:?
 

 
.?
 
に一括変換できないでしょうか?
 
 
 
 
 

 
ありがとう。