teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

タイトル変更

2016/08/25 08:58

投稿

morikawa0208
morikawa0208

スコア27

title CHANGED
@@ -1,1 +1,1 @@
1
- あるExcelの複数のシートから、特定の値を持つ「行」のみ別のExcelへ抽出したい
1
+ 【内容追記】あるExcelの複数のシートから、特定の値を持つ「行」のみ別のExcelへ抽出したい
body CHANGED
File without changes

1

途中経過

2016/08/25 08:58

投稿

morikawa0208
morikawa0208

スコア27

title CHANGED
File without changes
body CHANGED
@@ -19,4 +19,47 @@
19
19
  その契約で得られる仲介手数料等が算出される形となります。
20
20
 
21
21
 
22
- 私の勉強不足によりおかしな質問をしているかもしれませんが、何卒よろしくお願いいたします。
22
+ 私の勉強不足によりおかしな質問をしているかもしれませんが、何卒よろしくお願いいたします。
23
+
24
+ ###途中経過
25
+ ご回答いただいた方々のおかげで、元シートをコピー後、別ブックへの書き込みは
26
+ できるようになりました。
27
+ ただ、複数行が対象となった場合に、貼付けの動作が1行の中でループしてしまいます。
28
+ (言葉で伝わるか微妙なところですが)
29
+
30
+ 98%回答いただいたコードですが以下のコードです。
31
+ 【やりたいこと】
32
+ 対象となった行を別ブックに貼付け、次の対象となった行はその下に貼付ける 以後繰り返し
33
+ ```ここに言語を入力
34
+ Sub 書きかけ()
35
+
36
+
37
+ Dim i As Integer
38
+ i = 1
39
+
40
+ Dim sht As Worksheet
41
+ Dim rng As Range
42
+ Dim lastRow As Long
43
+
44
+ '現在のブック内にあるすべてのシートをループ処理
45
+ For Each sht In ActiveWorkbook.Worksheets
46
+ '対象シート内のA列先頭からA列最終データ行までをループ処理
47
+ For Each rng In sht.Range(sht.Cells(1, 1), sht.Cells(sht.Rows.Count, 1).End(xlUp))
48
+ 'A列が1なら、その行をコピー
49
+ If sht.Cells(rng.Row, 1) = 1 Then
50
+ sht.Rows(rng.Row).Copy
51
+
52
+ 'DBブックを選択し、一番下の行を選択
53
+ Windows("VBAテスト.xlsx").Activate
54
+ lastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row + 1
55
+
56
+ '値で貼り付け
57
+ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
58
+ :=False, Transpose:=False
59
+ End If
60
+
61
+ Next rng
62
+ Next sht
63
+
64
+ End Sub
65
+ ```