[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで結合』(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.