
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
【マクロ】1つのセルから結合されているセルへのコピー貼り付けについて
Excel(エクセル)
-
エクセルのマクロで結合セルに値を貼り付けたい
Excel(エクセル)
-
-
4
VBAで結合したセルがクリアできない
Excel(エクセル)
-
5
Excel マクロ セルを選択して結合されたセルの内容と転記したい
Excel(エクセル)
-
6
VBA初心者です。結合セルを保持したまま挿入する方法を教えてほしいです。
Visual Basic(VBA)
-
7
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
8
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
9
VBAの質問です! 転記元のセルが結合の場合にはどうしらちゃんと転記されますでしょうか? d4とd5
Visual Basic(VBA)
-
10
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
11
VBA:日付を配列に入れ別セルに転記するとデータ型が変わる
Visual Basic(VBA)
-
12
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
13
【Excel VBA】ファイル名が一定でないファイルの指定方法
Excel(エクセル)
-
14
マクロ実行後、表示がおかしくなる
Excel(エクセル)
-
15
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
16
セルの文字を「印刷時だけ非表示」にしたいです。
Excel(エクセル)
-
17
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
18
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
19
VBA 既に開いているBookに継続作業(転記)する追加コード
Visual Basic(VBA)
-
20
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
列方向、行方向の定義
-
CSVファイルの「0落ち」にVBA
-
エクセル 重複 隣の列 一番...
-
横軸を日付・時間とするグラフ化
-
エクセルで?
-
ListViewで列を指定して表示さ...
-
エクセルのソートで、数字より...
-
csvデータの列の入れ替えができ...
-
Excel文字列一括変換
-
最近急にVBAの処理速度が遅くな...
-
VBAで結合セルを転記する法を教...
-
アクセス 取り込み時に、桁数(...
-
リストからデータを紐付けしたい
-
条件付きの標準偏差をVBAを用い...
-
Excelの行数、列数を増やしたい...
-
Excel 2007で複合グラフ(折線...
-
matlabについての質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「段」と「行」の違いがよくわ...
-
エクセルで離れた列を選択して...
-
VLOOKUPの列番号の最大は?
-
VBAで別ブックの列を検索し、該...
-
VBA 指定した列にある日時デー...
-
列方向、行方向の定義
-
LEFT関数とIF関数の組み合わせ...
-
Excelの行数、列数を増やしたい...
-
CSVファイルの「0落ち」にVBA
-
エクセル マクロ 範囲指定で...
-
VBAで結合セルを転記する法を教...
-
土日の列幅の自動変更を教えて...
-
ListViewで列を指定して表示さ...
-
エクセルで最初の行や列を開け...
-
エクセル マクロ 範囲の値を上...
-
csvデータの列の入れ替えができ...
-
最近急にVBAの処理速度が遅くな...
-
Excel文字列一括変換
-
エクセルで複数列の検索をマク...
-
エクセルのソートで、数字より...
おすすめ情報
WindFaller 様 GooUserラック 様
お礼が遅れてすみませんでした。
私の質問の仕方が悪くてすみません。
ご両者の回答で質問のファイルは思い通りに動きました。
実際のファイルは1行目にタイトル行があり、データは3行目からになっていて、表示の右側にもあと数列のデータが入っています。
ご両者の構文を手直しして試みましたが、実力不足で思うように動かすことができませんでした。
データは下図のようになっており、I列以降にも何列かのデータが入っています。