- ベストアンサー
あるケタの数字を別の文字列に変更するには?
下記の番号の3500 もしくは 4500 の番号を **** にして表示をしたい ただし、3500 4500は 何の数字になるかはわかりません。 要するに、この場所に来る数字を****に変更したいという事です。 場所とは、左から数字で数えて、12ケタ、13ケタ、14ケタ、15ケタ目です。 12-1234-12345-4500-1 12-1234-12345-5500-1 【エクセルバージョン】 2002
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
桁数が決まってるならREPLACE関数で左から15文字目から4文字を"****"に置き換える =REPLACE(A1,15,4,"****")
その他の回答 (3)
- bunjii
- ベストアンサー率43% (3589/8249)
>場所とは、左から数字で数えて、12ケタ、13ケタ、14ケタ、15ケタ目です。 >12-1234-12345-4500-1 桁位置に誤りがあるようです。 文字列の部分置換なので"-"も数に入れないと目的の結果になりません。 元の文字列がA1セルのとき下記の式で良いと思います。 =IF(LEN(A1)>18,REPLACE(A1,15,4,"****"),"") IF関数の論理式である LEN(A1)>18 は元の文字列が未入力や文字列の長さが足りないときにエラーとならないようにするためです。
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、元データとなる番号がA1セルに入力されているものとします。 もし、番号の中で「****」に置換したい数字が、必ず、文字列の先頭から数えて15番目の文字から始まっていて、必ず4文字であると決まっている場合には、次の様な関数となります。 =IF(A1="","",IF(COUNTIF(A1,"??-????-?????-????*"),REPLACE(A1,15,4,"****"),"「置換できません」")) 又、もしも、「-」で区切られている各数字の桁数が、必ずしも「2桁-4桁-5桁-4桁-1桁」という形式と決まっている訳ではなく、それぞれの桁数が変化する事もあり得る場合において、「-」で区切られている数字の中の先頭から4番目に現れる数字を、その桁数と同じ回数だけ連続している「*」の繰り返し(例えば3桁なら「***」、6桁なら「******」)に置換する、という場合には、次の様な関数となります。 =IF(A1="","",IF(COUNTIF(A1,"*?-*?-*?-*"),LEFT(A1,FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),3)))&REPT("*",FIND(CHAR(1),SUBSTITUTE(A1&"-","-",CHAR(1),4))-FIND(CHAR(1),SUBSTITUTE(A1,"-",CHAR(1),3))-1)&REPLACE(A1,1,FIND(CHAR(1),SUBSTITUTE(A1&"-","-",CHAR(1),4))-1,),"「置換できません」"))
- keithin
- ベストアンサー率66% (5278/7941)
>要するに、この場所に来る数字を****に変更したい =LEFT(A1,14)&"****"&RIGHT(A1,2) または =LEFT(A1,14)&"****"&MID(A1,19,99) 場所とは、左から「文字数」で数えて、15文字目からの4文字です。