[[20030313124140]] 『CONCATENATEで結合したセルの間に/を入れる場合』(じーこ) ページの最後に飛ぶ

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

 

『CONCATENATEで結合したセルの間に/を入れる場合』(じーこ)

CONCATENATEで結合したセルの間に"/"を入れられ、セルに表記がない場合には"/"を入れないようにするにはどうしたら良いのでしょうか?

たとえば、A列からD列の4つのセルを結合する際

=CONCATENATE(A1,"/",B1,"/",C1,"/",D1) としました。

1/2/3/4 で成功しました。

しかし必ずA列からD列まで数値があるわけではなく、A列とB列しか数値がない場合に

1/2//となってしまいます。

C列、D列の前のスラッシュが要らない場合、"/"を出さないようにするにはどのように数式を指定すれば良いのでしょうか?


 ダブルスラッシュをシングルスラッシュに置き換える方法では都合が悪いですか?

 =SUBSTITUTE(CONCATENATE(A1,"/",B1,"/",C1,"/",D1),"//","/")

遊び心で、諸条件をクリアするように下記の式を作ってみました。

 =SUBSTITUTE(IF(AND(A1="",B1=""),C1&"/"&D1,IF(AND(C1="",D1=""),A1&"/"&B1,IF(D1="",A1&"/"&B1&"/"&C1,IF(A1="",B1&"/"&C1&"/"&D1,CONCATENATE(A1,"/",B1,"/",C1,"/",D1))))),"//","/")

参考にはならないと思いますが、試してみて下さい。

 (シニア)


うわっ!おみそれしました・・・。すいません、今後のために質問してもよろしいですか?

シニアさんの1つ目の式では、確かにシングルフラッシュになりましたが、

二つ目の式でも最後が

CONCATENATE(A1,"/",B1,"/",C1,"/",D1))))),"//","/")

なのになぜスラッシュがなくなるのでしょうか?あとSUBSTITUTEの使い方が本を読んだのですがピンときません。

もしお暇でしたらいいので、教えてください。

(じーこ)


 SUBSTITUTE関数は、文字列中の指定された文字を他の文字に置き換える関数です。

SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)

上の例の場合、文字列はCONCATENATE(A1,"/",B1,"/",C1,"/",D1)です。

この文字列で検索文字列 "//" を置換文字列 "/" に置き換えます。置換対象を省略するとすべてが対象になります。

文字列A1//D1,A1/B1//,//C1/D1が "//" の対象になります。 "//" を全部削除するとA1//D1はA1D1になってしまいます。

そこで、"//"を"/"に置き換えました。その結果A1/B1//,//C1/D1はA1/B1/,/C1/D1になてしまいます。

そこで、先頭の"/"と最後の"/"を除く条件式を埋め込んで処理してあります。

従って二番目の式の文字列はif(〜CONCATENATE(A1,"/",B1,"/",C1,"/",D1)))))が対象になります。

例A1に○○県 ▼▼▼市 ◆◆◆町 123の文字列があり、この文字列の全角空白を削除したいとき

=SUBSTITUTE(A1," ","") で○○県▼▼▼市◆◆◆町123 にすることが出来ます。

 (シニア)


ありがとうございました!がんばって使いこなせるようにします。

(じーこ)


コメント返信:

[ 一覧(最新更新順) ]


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