![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_13.png?e8efa67)
あつかましいお願いですが、ご教示願います。
まったくの初心者で、いろいろネット検索しましたが自力ではできませんでしたので
質問させて頂きます。
発注在庫管理の業務に使用数、注文数、在庫を記録したファイルがあります。
3か月分のデータが日単位で並んでいるのですが、簡略のため月単位で説明させて頂きます。
旧データをそのままコピーして新データとします。
旧データは9,10,11月のデータ、新データは10,11,12月に更新します。
VBAにしたい作業は添付図の通り、
旧データの10,11月の注文数を、新データの10,11月の注文数にコピペ、
旧データの9月在庫を、新データの先月末在庫にコピペしたいです。
行数は6000行程度あるため。
現在はちまちま手作業でコピペしていますが、担当替えでエクセル不慣れな人間でも
間違いなくできるようにVBAでやりたいと思っています。
ご助力お願いします。
![「エクセルVBA条件に合う行をコピー貼付け」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/5/958459_5497bd501677a/M.jpg)
No.1ベストアンサー
- 回答日時:
こんばんは!
一例です。
「旧データ」のSheet名は「Sheet1」・「新データ」のSheet名は「Sheet2」とします。
標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。
Sub Sample1()
Dim i As Long, lastRow1 As Long, lastRow2 As Long
Dim c As Range, wS As Worksheet
Set wS = Worksheets("Sheet1")
Application.ScreenUpdating = False
With Worksheets("Sheet2")
lastRow1 = wS.Cells(Rows.Count, "B").End(xlUp).Row
wS.Range("A:B").Insert
Range(wS.Cells(2, "A"), wS.Cells(lastRow1, "A")).Formula = "=IF(C2="""",A1,C2)"
Range(wS.Cells(2, "B"), wS.Cells(lastRow1, "B")).Formula = "=A2&D2"
lastRow2 = .Cells(Rows.Count, "B").End(xlUp).Row
.Range("A:B").Insert
Range(.Cells(2, "A"), .Cells(lastRow2, "A")).Formula = "=IF(C2="""",A1,C2)"
Range(.Cells(2, "B"), .Cells(lastRow2, "B")).Formula = "=A2&D2"
For i = 2 To lastRow2
If InStr(.Cells(i, "B"), "注文数") > 0 Then
Set c = wS.Range("B:B").Find(what:=.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Cells(i, "F").Resize(, 2).Value = wS.Cells(c.Row, "G").Resize(, 2).Value
End If
ElseIf InStr(.Cells(i, "B"), "在庫") > 0 Then
Set c = wS.Range("B:B").Find(what:=.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Cells(i, "E") = wS.Cells(c.Row, "F")
End If
End If
Next i
.Range("A:B").Delete
wS.Range("A:B").Delete
Application.ScreenUpdating = True
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
ご回答頂きありがとうございます。
希望通りの動作ができました。
1日かけてようやく中身を理解しましたが、
Range(wS.Cells(2, "A"), wS.Cells(lastRow1, "A")).Formula = "=IF(C2="""",A1,C2)"
"=IF(C2="""",A1,C2)"と1行目、2行目を指示しているのでは?と3行目以降もちゃんと入力されるのか理解できませんでしたが^^;
とにもかくにも稚拙な説明にもかかわらずありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Excel(エクセル) エクセルVBA オートフィルタでの絞り込みと並び替えについて 1 2023/07/08 13:08
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Word(ワード) LibreOfficeで数年保存しているデータの変更作業 4 2022/07/08 17:15
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
高速フーリエ変換でデータ数が...
-
PCの内蔵メモリにデータは残る?
-
大学、レポートのデータ引用元...
-
ネットカフェから、メールでき...
-
Excelの“並び替え”で文字コード...
-
電話帳データを印刷するには?
-
エクセルのグラフのデータ系列...
-
CSVファイルを・…
-
日本通信の当月利用データ量は...
-
パレート図等で「N=100」とあ...
-
職務質問で聞かれたデータはど...
-
Excelでのデータの統合
-
機械学習に使用するデータの水...
-
エクセルで縦に並んだデータを...
-
ExcelデータのMacとWindowsの文...
-
フラッシュメモリ SSD、USB、SD...
-
自然対数に変換する意味がわか...
-
英語で何と言うか教えてくださ...
-
撮った写真がCD-Rに記録されて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「未使用」と「不使用」ってど...
-
高速フーリエ変換でデータ数が...
-
PCの内蔵メモリにデータは残る?
-
パレート図等で「N=100」とあ...
-
ネットカフェから、メールでき...
-
下記マクロでMsgBox "空白です...
-
Excelの“並び替え”で文字コード...
-
XMLデータってなんですか?
-
Excel Webクエリ
-
データ用HDDの別のPCへの乗せ替え
-
エクセルのグラフのデータ系列...
-
職務質問で聞かれたデータはど...
-
時代はSSDなのにネットの最近の...
-
日本通信の当月利用データ量は...
-
ワードの差し込み印刷のデータ...
-
プロ野球の球団別の残塁数を載...
-
シリアルRS-232出力機器からの...
-
差し込み印刷がうまくできません
-
Excel ドロップダウンリスト(入...
-
表計算: 多次元の表を作りたい
おすすめ情報