그 코드를 log.xlsx에 가정 모두 통합 문서가 현재 열려있는,이
Option Explicit
Public Sub DataSummary()
Dim wbData As Workbook
Dim wsLog As Worksheet
Dim wsDataSet As Worksheet
Dim i, j, k As Integer
Dim prodDate As Date
Dim prodID As String
Dim lotNumber As Integer
Set wbData = Workbooks("Data.xls")
Set wsLog = ThisWorkbook.ActiveSheet
For i = 2 To wsLog.UsedRange.Rows.Count
prodDate = wsLog.Cells(i, 1).Value
prodID = wsLog.Cells(i, 2).Value
lotNumber = wsLog.Cells(i, 3).Value
For Each wsDataSet In wbData.Worksheets
If wsDataSet.Cells(2, 2).Value = prodID Then
For j = 4 To wsDataSet.UsedRange.Rows.Count
If wsDataSet.Cells(j, 1).Value = prodDate And wsDataSet.Cells(j, 3).Value = lotNumber Then
wsLog.Cells(i, 4).Value = wsDataSet.Cells(j, 4).Value
wsLog.Cells(i, 5).Value = wsDataSet.Cells(j, 5).Value
wsLog.Cells(i, 6).Value = wsDataSet.Cells(j, 6).Value
wsLog.Cells(i, 7).Value = wsDataSet.Cells(j, 7).Value
Exit For
End If
Next j
Exit For
End If
Next wsDataSet
Next i
End Sub
Here is link to excel files with code and sample data.
이 아래는 log.xlsx하는 data.xls에서 7까지의 항목 4를 복사합니다 코드를 추가로 확인하십시오. 그것은 일치하는 yeild가 없을 때 "0"을 넣습니다.
Option Explicit
Public Sub DataSummary()
Dim wbData As Workbook
Dim wsLog As Worksheet
Dim wsDataSet As Worksheet
Dim i, j, k As Integer
Dim prodDate As Date
Dim prodID As String
Dim lotNumber As Integer
Dim foundIt As Boolean
Dim Message As String
Message = "0"
Set wbData = Workbooks("Data.xls")
Set wsLog = ThisWorkbook.ActiveSheet
For i = 2 To wsLog.UsedRange.Rows.Count
foundIt = False
prodDate = wsLog.Cells(i, 1).Value
prodID = wsLog.Cells(i, 2).Value
lotNumber = wsLog.Cells(i, 3).Value
For Each wsDataSet In wbData.Worksheets
If wsDataSet.Cells(2, 2).Value = prodID Then
For j = 4 To wsDataSet.UsedRange.Rows.Count
If wsDataSet.Cells(j, 1).Value = prodDate And wsDataSet.Cells(j, 3).Value = lotNumber Then
wsLog.Cells(i, 4).Value = wsDataSet.Cells(j, 4).Value
wsLog.Cells(i, 5).Value = wsDataSet.Cells(j, 5).Value
wsLog.Cells(i, 6).Value = wsDataSet.Cells(j, 6).Value
wsLog.Cells(i, 7).Value = wsDataSet.Cells(j, 7).Value
foundIt = True
Exit For
End If
Next j
Exit For
End If
Next wsDataSet
If Not foundIt Then
wsLog.Cells(i, 4).Value = Message
wsLog.Cells(i, 5).Value = Message
wsLog.Cells(i, 6).Value = Message
wsLog.Cells(i, 7).Value = Message
End If
Next i
End Sub
이 진정한 해결책의 거친 scetch 것을 기억하십시오, 당신은 데이터가 올 경우 더 많은 검사가 마지막으로 내가 요약 할 수 있습니다!
정말 감사 등을 볼 예외 처리를 추가해야 자료! 예상대로. 다시 감사합니다!. 하나만 더 질문 할 수 있습니까? 로트 번호를 "0"으로 표시하려면 무엇을 추가해야합니까? 미확인 로트 번호? 미리 감사드립니다. – Nesloais