- 締切済み
エクセルVBA 行を文字列連結している列を連結した
エクセルシートで行を文字列連結している列を連結したいのですが・・ 行を文字列連結しているセル「AY4」は、 データー入力されていない時は、「0」表示しないとか「””」もしくは指定文字列にしています。 =IF(AT4=0,"連結なし",ConcatenateRangeText(C4:AY4)) もしくは =IF(AT4=0,"",ConcatenateRangeText(C4:AY4)) この「AY4」のセルでデーター入力されたものだけ文字列連結したい 画面上は空白だったり「連結なし」と表示されるのでコピーすれば良いのしょうが、ユーザーフォームのCommandButton11_Click()で処理したいのですが。 又、データー入力のある、行の文字列連結と列の文字列を一緒で出来ても良いのですが
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bin-chan
- ベストアンサー率33% (1403/4213)
> 一部説明間違いもありました 一部なんてものじゃ無いでしょw ConcatenateRangeTextって「インストラクターのネタ帳」さんのユーザ自作関数ですね。 (私も良くお世話になります) 出典を書いておかないと ForEachループ内の ret = ret & rng.Text で、IF文で連結を判断するか 連結と書いてあったが、セルBA**とか言いだしたところを見ると 「空白を無視して左詰めにコピーしたい」とも考えられそう。 だったらForEachの外でカウンタを宣言してゼロで初期化し、 ForEachループ内でIF文て判断してコピー対象ならカウンタに1加算して Range(”BA4”).offset(0, カウンタ)= rng.text の関数作るか、ですね > ここまでを一括処理したいのが希望です #1の4)で示しました がんばってください
- bin-chan
- ベストアンサー率33% (1403/4213)
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***」の列の文字列連結する時に、データーの無いセルは連結しない(データーのある行だけ)で値を取得したいのです(毎回入力データー数が違うため) 文字列連結したものをテキストとして吐き出したい もしくはクリップボードにいれて、テキストとして貼り付けたいのです ここまでを一括処理したいのが希望です よろしくお願い致します