• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数1992
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4
  • nishi6
  • ベストアンサー率67% (869/1280)

同一シート内で、複数の連続したセル範囲の内容を結合して任意の単一セルに出力します。 使用方法は、連続したセル(元のセル)を選択し、結合結果を表示するセル(出力のセル)をCtrlキーを押しながら選択してこのマクロを実行します。 元と出力のセル選択はどちらが先でもかまいません。少しはマクロらしい?  (A9というのは選択したセルの直ぐ下に結合結果を書く意味でした?A9は指定するようにしました) セルの結合は、文字列ばかりなら『&』で結合すればいいのですが、数値の表示機式、通貨、会計、日付・時間の表示形式等は『&』では表示どおり結合できません。下記ではそのセルの表示形式のまま結合するようにしています。 標準モジュールに貼り付けます。 Public Sub KetugoMoji()   Dim srcArea, desRg As Integer 'Areasのインデックス。元のセルと結果出力セル   Dim rg As Range 'セル   With Selection     'セル範囲を2つ選択しているか(誤った選択をしたらエラーメッセージ出力)     If .Areas.Count <> 2 Then MsgBox "セル選択エラー": Exit Sub     '複数セル範囲と単一セル。元のセルと結果出力セルを決める     If .Areas(1).Rows.Count > 1 And .Areas(2).Rows.Count = 1 Then       srcArea = 1: desRg = 2     ElseIf .Areas(2).Rows.Count > 1 And .Areas(1).Rows.Count = 1 Then       srcArea = 2: desRg = 1     Else       MsgBox "セル選択エラー": Exit Sub     End If     .Areas(desRg) = "" '結果出力セルをクリア     For Each rg In .Areas(srcArea)       .Areas(desRg) = .Areas(desRg) & rg.Text     Next   End With End Sub

共感・感謝の気持ちを伝えよう!

関連するQ&A

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

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

  • 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  ・

  • セルの値によって、どちらのマクロを実行するか分岐?

    ■もしも A1セルの値が 「課長」「部長」という文字列を含んでいる場合は、    ”マクロA” を実行する。 ■そうではなく、 A1セルに、 「社長」「社員」という文字列があったなrば、 ”マクロBを実行する”  ・・・というマクロを作りたいのですが、教えていただけませんでしょうか。  どうぞ、よろしくお願いいたします。  

その他の回答 (3)

  • 回答No.3

アクティブな範囲が可変でもOKなようにしてみました。 Sub Join() Dim Kekka As String Dim c As Range For Each c In Selection Kekka = Kekka & c.Value Next Range("A9").Value = Kekka End Sub 可変なのに結果がA9ってのも不自然なんでB1とかにすれば、セル100個でもいけます。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • maruru01
  • ベストアンサー率51% (1179/2272)

エクセルの関数「CONCATENATE」を使って、VBAでA9のセルに数式を設定するか、VBAのモジュールの中で、選択されたセルの値を取得して、先にforループを使って"&"で1つに連結してから、A9に代入すればいいのではないでしょうか。

共感・感謝の気持ちを伝えよう!

  • 回答No.1

うぃ、 マクロの中でselectを使わなければ、選択セルは変わらないです。 今回の処理は単純なので、一行でも出来ます。 range("A9") = range("A1") & range("A2") & range("A3") & range("A4") & range("A5") & range("A6") & range("A7") & range("A8") これで単純にA1~A8の値を結合できます。 数値とかが含まれる場合はまた違いますし(cstrを使う)、間に区切り文字を入れる場合(range("A1") & "・" & range("A2")等)も少し変わります。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • エクセルのマクロにおいて、セル内の文字の抽出方法

    エクセルのマクロにおいて以下のように行う方法を探しています。 ※使用しているofficeは2000です。 例えばA1のセル内に "WX2Z"のような文字列があるとします。 現在行おうと思っているのは、この"WX2Z"の文字列の1つめ、2つめの文字を順番に抽出する方法をマクロで行う方法を調べているのですが、どなたか教えて頂けないでしょうか? お願いいたします。  

  • エクセル マクロ

    エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

  • エクセル初心者です。アクティブセルの値を特定のセルに入れることができますか。

    エクセルで、「あるセルをアクティブにすると同時に、そのセルの値(文字列)を特定のセル(たとえばA1)に入れる」ということができますか。

  • Excel: 複数セルの内容を一つに連結するマクロ

    複数セルの内容を一つに連結するマクロの書き方を教えてください。例えば、セルの内容が以下で、 A1:apple A2:orange A3:banana A1からA3を選んだ状態でマクロを実行すると、 先頭のセル(ここではA1)に連結された内容が 以下のように代入され、先頭セル以外はクリア されるようにします。 apple<改行> orange<改行> banana<改行> 選択範囲の行(横方向)の大きさは可変 ですが、列(縦方向)は1列のみです。 よろしくお願いします。

  • エクセル 行数指定し一つのセルに改行込で入れる

    日本語が下手でもうしわけないです。 エクセルのマクロにて、行数指定指定したセルを別セルに 改行を含めて入れたいのです。 具体的なやりたいこととしては、 A列に不定期間隔で不定形の文字列が入力されていて、(間は空白) その文字列から文字列の行数を読み、 B列の同じ行数分のセルをひとまとまりとし、 別シートのA1に改行込みで入れる。 次のまとまりはA2に次はA3に… といった動作をさせたいです。 例. 1.A1,A6,A9に文字列があるとする。間は空白 文字列間の行数を読む (1)A1-A5 (2)A6-A8 (3)A9-最終行 2.A列で取得した行数と同じ行数をB列で指定 (1)B1-B5 (2)B6-B8 (3)B9-最終行 3.B列で指定したセルをひとまとまりとして 別シートのA1から順に改行込みで入れる (1)シート2のA1 B1(改行) B2(改行) B3(改行) B4(改行) B5(改行) (2)シート2のA2 B6(改行) B7(改行) B8(改行) (3)シート2のA3 B9(改行) ・ ・ 最終行 ####### マクロでの実現を考えているのですが、 マクロ初心者でさっぱりわかりません。 どなたか、マクロでの記述例を教えて頂けないでしょうか。 また、関数で実現できるのであれば、そちらも教えて頂きたいです。 宜しくお願いします。

  • セル内の一部文字列を消去のマクロ

    Excelで A1セル~A100セルまでに文字列が  ****(**) (****)というように入っています。 なお*は任意の文字を表す (条件) ( )で囲まれた文字列群は2つある。 (したいこと)A1セル~A100セルまでを対象に2番目の( )で囲まれた文字列群を消去するマクロを作成したい。      どう記述すればいいか。        処理前 A1: ****(**) (****) A2:*****(**) (****) A3:****(**) (*****) 以下略 処理後 A1: ****(**)  A2:*****(**)  A3:****(**)  以下略

  • エクセルのマクロ

    セルA1に、a2からa90までの任意の文字を入力した後にマクロを実行します。 セルA1にa7と入力されている時はセルB1にa6と表示され、セルA1にa86と入力されている時はセルB1にa85と表示されるようなマクロを教えてもらいたいのですが。 B1は必ずA1の数字の部分が1つ少なくなるということです。      

  • エクセルマクロによるハイパーリンクの方法

    はじめて投稿します。 エクセルマクロを始めたばかりですが、よろしくお願いします。 Fileフォルダ内にマクロ.xlsとdataフォルダがあり、 dataフォルダ内には複数のPDFファイルがあります。 マクロ.xlsのセルA1~A10に適当な英数字の文字列(例えばA123,B243,C072…など)が書かれていて dataフォルダ内にはセルA1~A10に書かれている文字列に少し文字が追加された名前のPDFファイル (例えばセルの文字列が"A123"なら"A123(OK).pdf")があります。 これをマクロを使ってA1~A10の文字列にハイパーリンクさせて、 セルに書かれている文字列をクリックして開きたいのですがどうすればよいでしょうか? A1~A10に書かれている文字列を変数cellnameに代入し、 PDFファイルをcellnameにワイルドカードを使って変数pdfnameに代入できずにつまずいています…。 どなたかご解答の程宜しくお願いいたします。

  • ExcelのVBAでアクティブシートの特定の文字列の入ったセルを全て選

    ExcelのVBAでアクティブシートの特定の文字列の入ったセルを全て選択し、文字をクリアしたいのですが、構文を教えて下さい。ちなみに、文字列というのは『jpg』です。 挿入した画像を一括削除する場合は、ActiveSheet.Shapes.SelectAll で全て選択できたのですが、文字列だとよくわかりませんでした。 Find("jpg")でやってみると最初の『jpg』だけが選択されてシート内の全てを選択できないので、全て選択・クリアできる方法を探しています。

  • エクセルのマクロで入力文字を一文字ずつ並んだセルに入れる

    エクセルマクロ超初心者です。 エクセルVBAでユーザーフォームを作成しました。 テキストボックスに入力した文字列を「登録」ボタン押下後、エクセルシートのセルに一文字づつ入るようにするにはどうすれば良いでしょうか? 例えばテキストボックスに「kohiro」と入力するとエクセルのsheet1のA1「k」、B1「o」、C1「h」、D1「i」、E1「r」、F1「o」となるようにしたいのです。入力する文字数は0~30文字までで、その都度長さは変わります。どうやって、文字をばらせばいいのか、またどうやって可変長の文字列を指定したセルに入力すればいいのかわかりません。どうかよろしくお願いいたします。