
VBAを使って列の結合を行うとしています。
内容は
・A3とA4を結合~A59とA60を結合(60まで)
という具合に、セル2つで一つの組み合わせです。
・これが列単位にA列~Y列まで同じように行おうとしています。
・一つ一つマクロで記述するとえらい手間がかかるので
簡略するマクロ文は無いでしょうか?
・また、この作業はsheet3で行おうとしています。
内容はsheet1に書かれていまして、
(A4~Y4までが1レコードでA20~Y20まであります。)
マクロで普通にsheet3にコピーをすると1レコード目の後に
2レコード目が飛んで3レコード目が次にきてしまいます。
・これはどうすればよいでしょうか?
素人であまりよく分かりません
ご教授宜しくお願いします。
No.2ベストアンサー
- 回答日時:
Sub Macro1()
name1 = Worksheets(1).Name
name3 = Worksheets(3).Name
Worksheets(3).Activate
n = 4
For r = 3 To 59 Step 2
For c = 1 To 25
Worksheets(name3).Range(Cells(r, c), Cells(r + 1, c)).Merge
Worksheets(name3).Cells(r, c).Value = Worksheets(name1).Cells(n, c)
Next
n = n + 1
Next
End Sub
ですね。
No.3
- 回答日時:
質問の表現をはっきりさせること。
私なら下記にする。
ーー
●Sheet1-->Sheet3へコピー、Sheet3でセル結合する。
言いたいことはSheet1からSheet3へデータを写すということであって
、コピー操作ではないのでは?紛らわしい。
●範囲はA3:Y60(>A20~Y20まであります、と矛盾しない?)
●セル結合は、3行目と4行目、5と6・・のようにおこなう。
●A4とA5には、それぞれデータが入っているのか?
文字列は結合もできるが、数字セルはどうするのか?
あるいはSheet1の結合前の1行データを、セル結合後のSheet3の行に入れていくのか。
●行数を2倍にするの。普通には意味がないと思うが?行幅を広げればすむのでは?
こういうのはC列8行ぐらいで質問して、回答を質問者側でY列、60行?まで広げればよい。
ーー
補足要求の返事もない場合が多いので、独断でやってみる。
例データ
Sheet1 A3:C11
a1234
b23123
c3445
d45678
e12432
f2345
g4112
h7334
コード
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet3")
'---
For j = 1 To 3 'C列までの例
For i = 3 To 8 * 2 + 2 Step 2 '8行の例
sh2.Range(sh2.Cells(i, j), sh2.Cells(i + 1, j)).MergeCells = True
k = Int((i - 1) / 2) + 2
sh2.Cells(i, j) = sh1.Cells(k, j)
Next i
Next j
End Sub
ーー
結果
Sheet3 A3:18
a1234
b23123
c3445
d45678
e12432
f2345
g4112
h7334
ーー
>素人であまりよく・・
質問文章の課題の説明が、あいまいと思った。VBAが判ってくると
明確に表現できるようになるもの。
マクロの記録で済むものとは随分考え方が違っているので、質問者には、荷が重いと思う。
No.1
- 回答日時:
Sub Test()
Dim i As Long
Dim j As Long
Application.ScreenUpdating = False
With Worksheets("Sheet3")
For i = 1 To 25
For j = 3 To 59 Step 2
.Range(.Cells(j, i), .Cells(j + 1, i)).Merge
Next
Next
i = 3
For j = 4 To 20
.Cells(i, 1).Resize(, 25).Value = _
Worksheets("Sheet1").Range("A" & j).Resize(, 25).Value
i = i + 2
Next
End With
Application.ScreenUpdating = True
End Sub
こんな感じの事でしょうか?
ファイルをコピーしてから試してみて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
Excel グラフのプロットからデ...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル 上下で列幅を変えるには
-
エクセルのセルに指定画像(.jpg...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
アクティブになっている行をマ...
-
罫線の斜線を自動で引くマクロ
-
エクセル マクロで数値が変っ...
-
VBAで色の付いているセルの行削除
-
EXCELで最後の行を固定
-
セルの色によって条件文をつけ...
-
excel 小さすぎて見えないセル...
-
エクセルのマクロで意図しない...
-
A1に入力された文字列と同じ文...
-
EXCEL VBA マクロ 別シートの...
-
エクセルVBA 最終行を選んで並...
-
VBAで行削除のできない場合がある
-
エクセルで特定の文字列が入っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセルで特定の文字列が入っ...
-
Excelのフィルター後の一番上の...
-
エクセル 上下で列幅を変えるには
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
[EXCEL]ボタン押す→時刻が表に...
-
結合されたセルをプルダウンの...
-
Excel グラフのプロットからデ...
-
excelのデータで色つき行の抽出...
-
excel 小さすぎて見えないセル...
-
A1に入力された文字列と同じ文...
-
EXCELで最後の行を固定
-
Excel ウインドウ枠の固定をす...
-
エクセルVBA 最終行を選んで並...
-
VBAで色の付いているセルの行削除
-
連続データが入った行の一番右...
-
エクセル2016で時間を入力して...
-
チェックボックスをクリックし...
おすすめ情報