[[20141024130407]] 『マクロで結合』(KAO) ページの最後に飛ぶ

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

 

『マクロで結合』(KAO)

お世話になります。

A〜E列のデータが予めR(1)〜R(5)に各々格納されています。
R(1)〜R(5)を「,」付で結合させてG列に表示させるマクロを検討中です。

試しにA,B列のみ対象として、R(3) = R(1) & IIf(Len(R(1)), ",", "") & R(2)
としましたが、この記述ではB列が「空欄」の時にも「,」が末尾についてしまうので
これは避けたく思います。

「空欄」がある列の前には「,」を付けないようにするにはどうしたらいいでしょうか?
例)
「,aa,bbb」、「aa,bbb,」→「aa,bbb」

よろしくお願いします。

追記)
If〜Then以外の短い記述があるでしょうか?

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


 文字列内にスペースがないのであれば

 Application.Substitute(Application.Trim(R(1) & " " & R(2) & " " & R(3) &" "& R(4) & " " & R(5)), " ", ",")
 ではどうか?

 Application.〜
 はシートで使える関数をVBAで使うための物。
 特定の文字を置き換える関数がVBAにはないのとVBAのTrim関数は前後のスペースは削除するが途中の
 二つ以上連続したスペースを一つにする機能がないため使っている。
(ねむねむ) 2014/10/24(金) 13:27

早々にありがとうございます、うまくいきました!

でも、なぜうまくいくのかがわかりません (T T)

解説お願いできませんか?
(KAO) 2014/10/24(金) 16:57


 R(1) & " " & R(2) & " " & R(3) &" "& R(4) & " " & R(5)
 だけだと空欄のセルの場所によって前後にスペースが付いたり、途中に複数のスペースが来る場合がある。

 そこでTRIM関数によって前後のスペースの削除および途中の連続したスペースを一つだけにする。

 その後、SUBSTITUTE関数でスペースを「,」(カンマ)に置き換えることで文字間に一つだけカンマを入れる形になる。

 そのため文字列の中にスペースがあるとそのスペースもカンマになってしまうため文字列の中にスペースがないことが使うための条件になる。

(ねむねむ) 2014/10/24(金) 17:11


 >If〜Then以外の短い記述があるでしょうか? 
 Replace(Application.Trim(Join(R)), " ", ",")
(seiya) 2014/10/24(金) 19:37

返信遅れてすみません。

ねむねむ様
ありがとうございます。
よくわかりました、憶えておきます。

seiya 様
「Join」って初めて知りました...
いろいろ使えそうで楽しみです。 ありがとうございます。

これからもよろしくお願いします。

(KAO) 2014/10/26(日) 11:13


コメント返信:

[ 一覧(最新更新順) ]


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