No.4ベストアンサー
- 回答日時:
以下のように修正してください。
------------------------------------------------------------------------------
Sub Sample()
Dim 元行 As Long
Dim 先行 As Long
Sheets("Sheet2").Select
Range(Cells(3, 1), Cells(Rows.Count, Columns.Count)).ClearContents
Sheets("Sheet1").Select
先行 = 3
For 元行 = 3 To Cells(Rows.Count, 7).End(xlUp).Row Step 2
If Cells(元行, 7).Value = "AA" Then
Range(Cells(元行, 1), Cells(元行 + 1, Columns.Count)).Copy
Sheets("Sheet2").Select
Cells(先行, 1).Activate
ActiveSheet.Paste
先行 = 先行 + 2
Sheets("Sheet1").Select
End If
Next
Application.CutCopyMode = False
End Sub
------------------------------------------------------------------------------
No.6
- 回答日時:
No.5 の追加です。
ループなどを使って範囲指定する時は「Range("左上列記号左上行番号:右下列記号右下行番号")」ではなく「Range(Cells(左上行番号,左上列番号),Cells(右下行番号,右下列番号))」を良く使います。こちらも列を数字で指定できるのでループが簡単に出来るからです。
No.5
- 回答日時:
回答ではありません。
No.3とNo.4 の一部解説です。ループなどを使ってセルを指定する時は「Range("列記号行番号")」ではなく「Cells(行番号,列番号)」を良く使います。列を数字で指定できるのでループが簡単に出来るからです。
ちなみに「オプション」「数式」「数式の処理」「R1C1 参照形式を使用する」にチェックを入れると列記号ではなく列番号で表示されるようになります。(プログラムを組む時に変えたままにして怒られた事があります)
「Rows.Count」はエクセルの最終行番号です。
「Columns.Count」はエクセルの最終列番号です。
エクセルのバージョンに合わせて変わってくれるので2003以前とか2007以降とか気にせず使えます。
「Cells(Rows.Count, 列番号).End(xlUp).Row」は列番号で指定された列の値の入っている最終行になります。注意点は、列に何もない時も1行目にだけ値が入っている時も「1」になります。
No.3
- 回答日時:
とりあえずこんな形で良いのでは?
------------------------------------------------------------------------------
Sub Sample()
Dim 元行 As Long
Dim 先行 As Long
Sheets("Sheet2").Select
Range(Cells(2, 1), Cells(Rows.Count, Columns.Count)).ClearContents
Sheets("Sheet1").Select
先行 = 2
For 元行 = 2 To Cells(Rows.Count, 7).End(xlUp).Row Step 2
If Cells(元行, 7).Value = "AA" Then
Range(Cells(元行, 1), Cells(元行 + 1, Columns.Count)).Copy
Sheets("Sheet2").Select
Cells(先行, 1).Activate
ActiveSheet.Paste
先行 = 先行 + 2
Sheets("Sheet1").Select
End If
Next
Application.CutCopyMode = False
End Sub
------------------------------------------------------------------------------
No.2
- 回答日時:
マクロなら、この程度で良いかと思います。
'//標準モジュール
Sub MergeCellsCopy()
Dim c, k As Long
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
k = 1
Application.ScreenUpdating = False
With sh1
For Each c In .Range("G2", .Cells(Rows.Count, "G").End(xlUp)).Cells
If c.Value Like "AA" Then
c.EntireRow(1).Resize(2, 7).Copy sh2.Cells(2 + (k - 1) * 2, 1)
k = k + 1
End If
Next
End With
Application.ScreenUpdating = True
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) エクセルのVBAで上の表の最下行を求める 4 2022/09/14 15:22
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセル VBAでセル内容を別の列の最下行に転記したい 2 2022/11/29 08:47
- Visual Basic(VBA) 複数のシートを一つのシートにまとめたい 左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽 2 2022/09/18 18:42
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルのマクロで結合セルに値を貼り付けたい
Excel(エクセル)
-
Excel マクロ セルを選択して結合されたセルの内容と転記したい
Excel(エクセル)
-
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
-
4
VBA初心者です。結合セルを保持したまま挿入する方法を教えてほしいです。
Visual Basic(VBA)
-
5
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
6
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
10
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
11
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
12
別シートの最終行に貼り付けするマクロを教えてください。 シートYのE3からE15までをコピー シート
Excel(エクセル)
-
13
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
14
画像を削除したい(VBA)
Word(ワード)
-
15
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
16
VBAで重複データを合算したい
Excel(エクセル)
-
17
VBA 入力月で該当シートを選択する方法
Visual Basic(VBA)
-
18
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
19
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
20
Excelのオートシェイプで2箇所折れ曲がった矢印
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
LEFT関数とIF関数の組み合わせ...
-
「段」と「行」の違いがよくわ...
-
CSVファイルの「0落ち」にVBA
-
エクセルで住所を県と市・郡と...
-
リストからデータを紐付けしたい
-
Accessのレポートで繰り返し表...
-
エクセルで最初の行や列を開け...
-
Excel文字列一括変換
-
データシートビューのタイトル...
-
エクセルでセル12個間隔で合...
-
VBA Splitで「引数の数が一致...
-
VBA エラーコード1004について
-
エクセル 重複したデータを別...
-
エクセルのソートで、数字より...
-
マクロで統合
-
エクセルマクロPrivate Subを複...
-
別のブック最終行最終列の次へ...
-
アクセス 取り込み時に、桁数(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
「段」と「行」の違いがよくわ...
-
LEFT関数とIF関数の組み合わせ...
-
VBA 指定した列にある日時デー...
-
CSVファイルの「0落ち」にVBA
-
エクセルで住所を県と市・郡と...
-
Excelの行数、列数を増やしたい...
-
エクセルで複数列の検索をマク...
-
エクセルマクロの組み方
-
Alt+Shift+↑を一括で行うには、...
-
えABのある列って
-
エクセルのソートで、数字より...
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
VBAで別ブックの列を検索し、該...
-
エクセルマクロPrivate Subを複...
-
列方向、行方向の定義
-
リストからデータを紐付けしたい
-
Accessのレポートで繰り返し表...
おすすめ情報
WindFaller 様 GooUserラック 様
お礼が遅れてすみませんでした。
私の質問の仕方が悪くてすみません。
ご両者の回答で質問のファイルは思い通りに動きました。
実際のファイルは1行目にタイトル行があり、データは3行目からになっていて、表示の右側にもあと数列のデータが入っています。
ご両者の構文を手直しして試みましたが、実力不足で思うように動かすことができませんでした。
データは下図のようになっており、I列以降にも何列かのデータが入っています。