- ベストアンサー
エクセルVBAで旧データを新データにコピペする方法
- エクセルVBAを使用して、旧データの10月と11月の注文数を新データにコピーし、9月の在庫を新データの先月末在庫にコピーする方法を教えてください。
- 発注在庫管理の業務で使用するファイルには3か月分のデータがあります。旧データを新データにコピーする際、10月と11月の注文数を新データにコピーし、9月の在庫を新データの先月末在庫にコピーしたいです。
- エクセルで発注在庫管理の業務を行っています。旧データの10月と11月の注文数を新データにコピーし、9月の在庫を新データの先月末在庫にコピーする方法を教えてください。手作業では時間がかかるため、VBAを使用して効率的に作業したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 一例です。 「旧データ」の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)
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
>3か月分のデータが日単位で並んでいるのですが、簡略のため月単位で説明させて頂きます。 アホ!日単位で説明でせよ!! 作りたいのはファイルか?シートか??
お礼
ご回答頂きありがとうございます。 希望通りの動作ができました。 1日かけてようやく中身を理解しましたが、 Range(wS.Cells(2, "A"), wS.Cells(lastRow1, "A")).Formula = "=IF(C2="""",A1,C2)" "=IF(C2="""",A1,C2)"と1行目、2行目を指示しているのでは?と3行目以降もちゃんと入力されるのか理解できませんでしたが^^; とにもかくにも稚拙な説明にもかかわらずありがとうございました。