15. maj 2008 - 10:38Der er
2 kommentarer og 1 løsning
Sammenkædning og summering af data
Jeg har en et dataark med en række maskindata som er listet efter dato og klokkeslæt.
Strukturen er som nedenstående:
Dato Produktnavn Fejltype 1 Fejltype 2 Fejltype 3 Forsøg
Det jeg gerne vil trække ud i et nyt ark er en liste med det samlede antal fejl og forsøg for hvert produktnavn pr. dag. Det skal siges at det samme produkt ofte produceres flere gange om dagen.
Ønsket output:
Dato Produktnavn Sum Fejl Sum forsøg
I outputtet skal produktnavnet kun fremgå en gang.
Rem Version 1 Rem ========= Const optællingsArk = "DATAARK Pareto" Const dataArk = "DATAARK"
Dim antalRæk, fRække, dArk As Worksheet, optælArk As Worksheet Sub FejlOptælling() Dim pNavn, pDato As Date, pMisP, insFail, visionFail, fAtt, fFail
Rem def. ark Set dArk = ActiveWorkbook.Sheets(dataArk) Set optælArk = ActiveWorkbook.Sheets(optællingsArk)
Rem Slet gl. data på optællingsark optælArk.Activate ActiveSheet.Rows("2:65000").Select Selection.Delete Shift:=xlUp
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 = 2
Application.ScreenUpdating = False
Rem Traverser Arket For ræk = 2 To antalRæk pNavn = Cells(ræk, 1) 'A kol
Rem kun beh. hvis pNavn udfyldt If pNavn <> "" Then pDato = Format(Cells(ræk, 2), "dd-mm-yyyy") 'B - pMisP = Cells(ræk, 13) 'M - insFail = Cells(ræk, 15) 'O - visionFail = Cells(ræk, 16) 'P - fAtt = Cells(ræk, 17) 'Q - fFail = Cells(ræk, 18) 'R -
optælFejl pNavn, pDato, pMisP, insFail, visionFail, fAtt, fFail End If Next ræk
Application.ScreenUpdating = True
Rem Vis optællingsArk optælArk.Activate ActiveSheet.Cells(1, 1).Select
MsgBox ("Optælling afsluttet") End Sub Private Sub optælFejl(pNavn, pDato, pMisP, insFail, visionFail, fAtt, fFail) 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 .Cells(pRæk, 6) = .Cells(pRæk, 6) + fAtt .Cells(pRæk, 7) = .Cells(pRæk, 7) + fFail End With End Sub Private Function findesPnavnPdato(pNavn, pDato) With optælArk For ræk = 2 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
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.