複数のエクセルから表の情報を転記する作業をマクロ化したいと思っています。
コピー先となるエクセルは一つですが、コピー元となるのエクセルは複数あります。
参考に画像を添付しましたが別ブック1,2の情報をコピー先のエクセルに転記したいです。
そこで躓いているのが最終行の取得についてです。
下記のようなコード(一部省略していますが)を使って最終行の取得をして転記するところまではできているのですが、これだと当たり前ですが、別ブック1の情報はE,F列の空欄まで転記され、別ブック2だとC列以降の6行目にデータが入っていても転記されません。
ブック毎に最終行の列が毎回異なる場合はどのようなコードを使えばよいか、どなたか教えていただけないでしょうか。。。
Dim wb As Workbook(コピー元別ブック)
Dim sh As Worksheet(コピー先)
Dim c As Long, r As Long
Dim no As Variant
Dim rr As Long
・
・
・
With wb.Worksheets("シート1")
For c = 1 To .Cells(3, Columns.Count).End(xlToLeft).Column Step 2
no = .Cells(3, c).Value
For r = 4 To .Cells(Rows.Count, 2).End(xlUp).Row
rr = rr + 1
sh.Cells(rr, 1).Value = .Cells(r, c).Value
sh.Cells(rr, 2).Value = .Cells(r, c + 1).Value
sh.Cells(rr, 3).Value = no
Next r
Next c
End With
よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
連投すみません
気が付きました#3訂正します
.Cells(r, c).Valueについての条件ですね
For r = 4 To .Cells(Rows.Count, c).End(xlUp).Row
If .Cells(r, c).Value <> "" Then
rr = rr + 1
・
・
End If
Next r
確かめられないので間違っていたらごめんなさい
No.3
- 回答日時:
忘れていました
>別ブック1の情報はE,F列の空欄まで転記され
If .Cells(3, c).Value<>"" Then
no = .Cells(3, c).Value
・
・
Next r
End If
Next c
など
無駄な繰り返しをしない方法は考えてください
No.2
- 回答日時:
こんにちは
掲示のコードにおいて最も簡単な方法は
カラム方向が前段で取得されているようなので 変数cを使って
For r = 4 To .Cells(Rows.Count, c).End(xlUp).Row
とすれば良いです
最終行の取得方法は色々やり方がありますが参考程度で
対象の表組み(データ)で変わります
例の図での取得方法は ざっくり見て3通りですが
ヒントをマクロの記録を使って取得できる方法2通りを
1、Excelシート上でA1を選択してCtrl + Shift + Endキーを押す
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selectionは Range("A1")を指しますね
Rangeを見ると
Range("A1",ActiveCell.SpecialCells(xlLastCell)) が範囲ですね、つまり
ActiveCell.SpecialCells(xlLastCell)が最終セルを示しますので
ActiveCell.SpecialCells(xlLastCell).Row で最後の行数が得られます
しかし、値がなくなってしまうA列では希望の繰り返しにならないかも知れません
これについての対策も複数考えられますが、If セル<>"" Then などの条件設定で空白でないセルのみ処理するとか、繰り返し処理を抜けるとかできると思います
2、はA3を選択してCtrl + Shift + *キーを押す で記録したコードです
Range("A3").Select
Selection.CurrentRegion.Select
これはセル範囲を示していますので .Countなどを使う必要がありそうです
が自身で調べてみてください
その他にUsedRangeプロパティを使う方法などもあります2同様行番号を取得するには少し複雑になります
No.1
- 回答日時:
With wb.Worksheets("シート1")
・・・・
End With
の箇所をサブルーチン化する等してブック毎に繰り返すようにすれば良いかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
VBA シート名が一致した場合の...
-
フォルダ内の全てのファイルに...
-
Excel-VBAでのファイルの開き方
-
別ブックをダイアログボックス...
-
vbaでvbaProjectのパスワード解...
-
【VBA】全シートの計算式を全て...
-
【ExcelVBA】インデックスが有...
-
エクセルVBAが途中で止まります
-
エクセルVBAで読み取りパスワー...
-
Excelマクロ 該当する値の行番...
-
【前回の続き続きです、ご教示...
-
VBA コードを実行すると画面が...
-
【マクロ】違うフォルダにある...
-
マクロのBeforeCloseイベントに...
-
VBで配列の差分を取りたいのですが
-
VBA 別ブックからコピペしたい...
-
EXCEL2013 シート内容を別ブッ...
-
VBAで別のブックにシートをコピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
VBAで別ブックのシートを指定し...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
Excelのマクロについて教えてく...
-
vbaでvbaProjectのパスワード解...
-
VBA コードを実行すると画面が...
-
【マクロ】アクティブセルにブ...
-
Excelのマクロについて教えてく...
-
VBAで別のブックにシートをコピ...
-
VBS Bookを閉じるコード
-
Excelのマクロについて教えてく...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
ACCESSVBA からExcelの他ブック...
-
vbaで他のブックに転記したい。...
-
【マクロ】違うフォルダにある...
おすすめ情報