• 締切済み

エクセルVBA 行を文字列連結している列を連結した

エクセルシートで行を文字列連結している列を連結したいのですが・・ 行を文字列連結しているセル「AY4」は、 データー入力されていない時は、「0」表示しないとか「””」もしくは指定文字列にしています。 =IF(AT4=0,"連結なし",ConcatenateRangeText(C4:AY4)) もしくは =IF(AT4=0,"",ConcatenateRangeText(C4:AY4)) この「AY4」のセルでデーター入力されたものだけ文字列連結したい 画面上は空白だったり「連結なし」と表示されるのでコピーすれば良いのしょうが、ユーザーフォームのCommandButton11_Click()で処理したいのですが。 又、データー入力のある、行の文字列連結と列の文字列を一緒で出来ても良いのですが

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.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
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

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

minakun01
質問者

補足

bin-chanさん 説明が悪くてすみません 一部説明間違いもありました 「BA4」に =IF(AT4=0,"",ConcatenateRangeText(C4:AY4)) 以下「BA***」まで式コピー データーのあるなし判断セルは「AT4」 行の文字列連結セル「BA4」から「BA***」 この「BA4」から「BA***」の列の文字列連結する時に、データーの無いセルは連結しない(データーのある行だけ)で値を取得したいのです(毎回入力データー数が違うため) 文字列連結したものをテキストとして吐き出したい もしくはクリップボードにいれて、テキストとして貼り付けたいのです ここまでを一括処理したいのが希望です よろしくお願い致します

関連するQ&A

  • エクセルVBA 文字列複数行・列連続連結

    エクセルVBA 文字列複数行・列連続連結でお教え下さい A列に基本文字(縦順) B列~F列に複数行データー(文字・時間) 文字結合時に改行 例 A2&B2&改行&A3&C2&改行&A4&D2&改行・・・・・ 次のデーター行 A&B3&改行&A3&C3&改行&A4&D3&改行・・・・・ データーの最終行まで連続で このような複数行あるデーターの連続文字列連結をしたいのですが・・・ 文字列連結後は 1.指定セルに貼り付け 2.クリップボードに貼り付け 3.テキストファイルに保存 よろしくお願い致します

  • Excelマクロにて文字列連結

    現在Excelのマクロにて文字列の連結を行っているのですが、 繋いだ文字列を改行を付けて連結を行いたいです。 セルとセルの中の文字列を改行を付けて連結するにはどうしたらいいのでしょうか? 例 A1セル「あああ」 B1セル「いいい」 C1セル「あああ       いいい」 Worksheets(sheet1).Range("C1").Value = Worksheets(sheet1).Range("A1").Value + Worksheets(sheet1).Range("B1").Value をすると 「あああいいい」と1行で表示されてしまいます。     ↑ ここに改行を入れるにはどうしたらいいのでしょうか? 以上、宜しくお願いします。

  • Excelの文字列と文字列の連結

    A1のセルにはj50 C1のセルには01(ユーザ定義で00の書式) この二つの数値をCONCATENATE()関数を用いて文字列を 連結するとj501となってしまいます。 C1のセルを文字列の書式にするとうまくj5001と表示されますがそれ以外に方法はないでしょうか?

  • EXCEL VBAで文字列の検索とコピー

    検索したい文字をinputboxで入力して、A列を検索して、検索文字を含むセルをコピーして、そのコピーしたデータを、別のシートに貼り付ける、次に該当したセルをさっきコピーしたデータの次の行に貼り付けて・・・。とデータが入力してある最終行までの繰り返し、をやりたいのですが、ご指導の程、説明が下手ですが宜しくお願いします!

  • エクセルセル内の文字の連結マクロ

    例えばエクセルシート内のA列の1~8行目までに文字が入力してあるとします。 そこで、例えばA1のセルからA8のセルを選択したまま(アクティブにしたまま)で、マクロを実行して、A9のセルにA1~A8の文字を連結した文字列を書くということはできますか?

  • Excelで複数行の連結

    CONCATENATE関数を使うと複数の文字列の連結ができますが、行のデータを連結させるには どのような関数を用いれば良いのでしょうか? =A1&A2&A3&A4 と云った、地味な作業ではなく、関数でパシッツ!とできる方法を教えて下さい。

  • VBA 文字列に関して

    現在 A22のセルに入力された文字列をボタンを押せば ばらばらにしてA22のセルから順番に入れるマクロを作りました (例)A22のセルに ”こんにちわ”の文字列が入っている場合 ボタン押下   ↓ A22のセル⇒こ B22のセル⇒ん C22のセル⇒に D22のセル⇒ち E22のセル⇒わ になる。 不思議なことに数字を16文字以上いれてボタンを押し文字を分離すると入力していない文字、数字が入ってしまいます。 数字だけこういう現象が発生してしまいます。 例えば "1111111111111111"と入力して文字を分離した場合 1.11111111111111E+15と個々のセルに格納されます。 原因がわかる方、教えて頂けないでしょうか? 以下がコードです。宜しくお願い致します。 Private Sub CommandButton1_Click()   Dim one As String   Dim myString As String   myString = Cells(22, 1)   numString = Len(Cells(22, 1))   If Len(myString) <= 50 Then    For i = 1 To Len(Range("A22").Value)      one = String(1, myString)      Cells(22, i) = one      myString = Replace(myString, one, "", 1, 1, vbTextCompare)    Next i   End If End Sub

  • EXCELで、文字列の行数が変わる

    EXCELで、「折り返して全体を表示する」設定にしたセルに、ちょうどセル幅程度の文字列を入力した場合、画面では1行におさまって見えるのが、印刷すると2行にわたり、結果、1行分の高さのセルでは後ろの文字が見えなくなることがあります。 印刷プレビューにすると印刷したときの行数がわかるようですが、 (1) 印刷した時に必要となる文字列の行数にあわせて、セルの高さを変える方法はないでしょうか。 (2) そもそも、画面表示と印刷とで、文字列の行数が変わるのは何故でしょうか。(画面表示の文字列の長さと、プリンタ出力の文字列の長さが異なるように見えます。) (3) 文字列が1行でおさまるか、2行にわたるかは、プリンタにも依存するものでしょうか。 質問事項が多くなりましたが、お分かりの項目だけでも結構です。 どなたかお教えいただければありがたいです。 EXCELのVersionには関係ないと思いますが、参考までにEXCELは2003です。 よろしくお願いします。

  • エクセルで特定の文字列が入った行を非表示にしたい

    エクセル(97)で特定の列のセルに特定の文字列が入った行を非表示にする機能はありますでしょうか? 例えばC列の3行目以降から「無し」という文字列が入ったらその行を非表示にしたいのですが・・・

  • Excel文字列の連結について教えてください(VBA)

    Excelの文字列の結合について教えてください。 色々調べたのですが、VBA自体がよくわからず困っています。 やりたい事は、(Excel表をご参考) 『セルA1とB1とA2の文字を固定で、セルA3以降の文字以降を  順次連結してcsvに書き出すVBAを作成したい。』 どうしても繰り返す連結マクロがわかりません。 ExcelVBAに詳しい方、教えてください。 よろしくお願いします。 結果例) 20080501A01 20080501A02 20080501B01 20080501C01   ・   ・(300件以上続きます) <Excel表>    A列  B列 1  2008  05 2  01    3  A01 4  A02 5  B01 6  C01 7  ・ 8  ・

専門家に質問してみよう