No.4ベストアンサー
- 回答日時:
同一シート内で、複数の連続したセル範囲の内容を結合して任意の単一セルに出力します。
使用方法は、連続したセル(元のセル)を選択し、結合結果を表示するセル(出力のセル)を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
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
- 回答日時:
エクセルの関数「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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのことで教えてください。 A1セルに、 別シートのA1セルが1のときは「A」、2のときは「B 4 2023/02/24 23:08
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) 一つのセルに複数の関数を入力する方法 4 2022/09/30 13:42
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Excel(エクセル) エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させる方法はあります 1 2022/11/14 21:03
- Excel(エクセル) エクセル関数について教えてください 4 2023/02/05 14:47
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel UserForm の表示位置
-
エクセルVBA 配列からセルに「...
-
VBAマクロ実行時エラーの修正に...
-
エクセルの合計を自動で表示さ...
-
EXCEL VBA 文中の書式ごと複写...
-
VBA 複数条件の分岐処理の上手...
-
マクロの実行時エラー'1004'が...
-
入力規則のリスト選択
-
VBA にて、条件付き書式で背景...
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
昨日、質問した件『VBA にて、...
-
ユーザフォームを使ってのデー...
-
VB.netでのExcelデータの読み込み
-
Excel VBAでCheckboxの名前を変...
-
【VBA】写真の貼り付けコードが...
-
VBA:日付を配列に入れ別セルに...
-
グラフの参照元を相対参照で記...
-
VBAでユーザーフォームにセル値...
-
【Excel VBA】一番右端セルまで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
VBA 複数条件の分岐処理の上手...
-
Excelで空白セル直前のセルデー...
-
Excel UserForm の表示位置
-
EXCEL VBA 文中の書式ごと複写...
-
特定の色のついたセルを削除
-
VBA にて、条件付き書式で背景...
-
VBAでユーザーフォームにセル値...
-
【VBA】写真の貼り付けコードが...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
Excel VBA IF文がうまく動作し...
-
下記のマクロの説明(意味)を...
-
入力規則のリスト選択
-
C# DataGridViewで複数選択した...
-
関数の引数でrangeを指定したとき
おすすめ情報