天使と悪魔選手権

エクセルシートで行を文字列連結している列を連結したいのですが・・

行を文字列連結しているセル「AY4」は、
データー入力されていない時は、「0」表示しないとか「””」もしくは指定文字列にしています。

=IF(AT4=0,"連結なし",ConcatenateRangeText(C4:AY4))
もしくは
=IF(AT4=0,"",ConcatenateRangeText(C4:AY4))

この「AY4」のセルでデーター入力されたものだけ文字列連結したい

画面上は空白だったり「連結なし」と表示されるのでコピーすれば良いのしょうが、ユーザーフォームのCommandButton11_Click()で処理したいのですが。

又、データー入力のある、行の文字列連結と列の文字列を一緒で出来ても良いのですが

A 回答 (2件)

> 一部説明間違いもありました


一部なんてものじゃ無いでしょw

ConcatenateRangeTextって「インストラクターのネタ帳」さんのユーザ自作関数ですね。
(私も良くお世話になります)
出典を書いておかないと

ForEachループ内の
ret = ret & rng.Text
で、IF文で連結を判断するか

連結と書いてあったが、セルBA**とか言いだしたところを見ると
「空白を無視して左詰めにコピーしたい」とも考えられそう。
だったらForEachの外でカウンタを宣言してゼロで初期化し、
ForEachループ内でIF文て判断してコピー対象ならカウンタに1加算して
Range(”BA4”).offset(0, カウンタ)= rng.text
の関数作るか、ですね

> ここまでを一括処理したいのが希望です
#1の4)で示しました

がんばってください

参考URL:http://www.relief.jp/itnote/archives/001342.php
    • good
    • 0

VBAで記述しているのだから、


1)AY4の値を変数(Variant型)に格納しておいて
2)ConcatenateRangeText(C4:AY4) してから
3)変数に格納しておいたAY4の値を代入
4)その一連の処理を CommandButton11_Click() で呼び出す
じゃダメなんですか?

この回答への補足

bin-chanさん

説明が悪くてすみません
一部説明間違いもありました

「BA4」に
=IF(AT4=0,"",ConcatenateRangeText(C4:AY4))
以下「BA***」まで式コピー

データーのあるなし判断セルは「AT4」

行の文字列連結セル「BA4」から「BA***」

この「BA4」から「BA***」の列の文字列連結する時に、データーの無いセルは連結しない(データーのある行だけ)で値を取得したいのです(毎回入力データー数が違うため)

文字列連結したものをテキストとして吐き出したい
もしくはクリップボードにいれて、テキストとして貼り付けたいのです

ここまでを一括処理したいのが希望です
よろしくお願い致します

補足日時:2014/01/26 10:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報