16. maj 2008 - 14:28
Der er
2 kommentarer og
1 løsning
Sammenkædning og summering af data
Jeg har et dataark med en række maskindata som er listet efter dato og klokkeslæt.
Strukturen er som nedenstående:
Dato Komponentnavn Fejltype 1 Fejltype 2 Fejltype 3 Komponentnavn Fejltype 1 Fejltype 2 Fejltype 3 Komponentnavn Fejltype 1 Fejltype 2 Fejltype 3 …
Det jeg gerne vil trække ud i et nyt ark er en liste med det samlede antal fejl for hvert komponentnavn pr. dag. Der kan fremkomme maks. 15 komponenter pr. række
Ønsket output:
Dato komponentnavn Sum Fejl
Rem Version 2 - optælling pr. PartName
Rem ==================================
Const optællingsArk = "DATAARK Pareto"
Const dataArk = "DATAARK"
Dim antalRæk, fRække, dArk As Worksheet, optælArk As Worksheet, del2Start
Sub PartsOptælling(slutRæk)
Dim pNavn, pDato As Date, pMisP, insFail, visionFail
Dim kol
del2Start = slutRæk
Rem def. ark
Set dArk = ActiveWorkbook.Sheets(dataArk)
Set optælArk = ActiveWorkbook.Sheets(optællingsArk)
Rem dataArk aktiveres
dArk.Activate
Rem Find antal rækker i arket
antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
Rem startRække i optællingsarket
fRække = del2Start
Application.ScreenUpdating = False
Rem Traverser Arket pr række i range X - CE
For ræk = 2 To antalRæk
kol = Range("X2").Column
For x = 1 To 15
pNavn = Cells(ræk, kol) 'PartName kol
Rem afbryd række, hvis pNavn er ej udfyldt
If pNavn = "" Then
Exit For
End If
pDato = Format(Cells(ræk, 2), "dd-mm-yyyy") 'B -
pMisP = Cells(ræk, kol + 1) 'MisPicked
insFail = Cells(ræk, kol + 2) 'Ins Fail.
visionFail = Cells(ræk, kol + 3) 'Vision Fail.
optælFejl pNavn, pDato, pMisP, insFail, visionFail
kol = kol + 4
Next x
Next ræk
Application.ScreenUpdating = True
End Sub
Private Sub optælFejl(pNavn, pDato, pMisP, insFail, visionFail)
Dim pRæk
pRæk = findesPnavnPdato(pNavn, pDato)
If pRæk = 0 Then
pRæk = fRække
fRække = fRække + 1
End If
With optælArk
.Cells(pRæk, 1) = pNavn
.Cells(pRæk, 2) = pDato
.Cells(pRæk, 3) = .Cells(pRæk, 3) + pMisP
.Cells(pRæk, 4) = .Cells(pRæk, 4) + insFail
.Cells(pRæk, 5) = .Cells(pRæk, 5) + visionFail
End With
End Sub
Private Function findesPnavnPdato(pNavn, pDato)
With optælArk
For ræk = del2Start To fRække
If LCase(.Cells(ræk, 1)) = LCase(pNavn) And .Cells(ræk, 2) = pDato Then
findesPnavnPdato = ræk
Exit Function
End If
Next
End With
findesPnavnPdato = 0
End Function