Oprettet ons. d. 10. marts 2010 kl. 07:35:46

mccookie
mccookie (25.442 point. Point ude: 525)

Import og behandling af data

Hej

Jeg har en variabel mængde data, som jeg ønsker at kunne præsentere "pænt". Data består af en rå fil fra en database med oplysninger om hændelser i et vaskeri.

Jeg håbede at man kunne lave en makro, hvori man importerede alle data. Herefter tyggede den lidt på det og sorterede det og præsenterede det "enkelt".

Data vil være formateret sådan:

Maskine nr | Timestample | Day of year | Måneds nr. | Price | Program |

Jeg ønsker ikke en færdig løsning, da jeg ikke selv lære noget..... så lidt how to, step by step....

Nogle der kan og vil hjælpe?

Skrevet ons. d. 10. marts 2010 kl. 10:46:28| #1

supertekst
supertekst (119.044 point)
supertekst-it.dk
Kunne en vel kommenteret/struktureret "færdig-løsning" accepteres?

Hvilen filtype er "rådata"?

Skrevet ons. d. 10. marts 2010 kl. 10:52:53| #2

mccookie
mccookie (25.442 point)
Hej Supertekst

Naturligvis kan en kommenteret løsning accepteres ;o)

Data ligger i en rå tekstfil.

Skrevet ons. d. 10. marts 2010 kl. 11:01:11| #3

supertekst
supertekst (119.044 point)
supertekst-it.dk
Ok - har du mulighed for at sende en kopi af denne fil?

Mailadr. under profil.

Skrevet ons. d. 10. marts 2010 kl. 11:06:15| #4

mccookie
mccookie (25.442 point)
Hej Supertekst

Du kan også få den her:

        timestample        | machineid |  cardid  | balance | option | price | state | weigth | program |  tenantid  | doy | month | dow | hour
----------------------------+-----------+----------+---------+--------+-------+-------+--------+---------+--------------+-----+-------+-----+------
2010-02-09 02:15:01.292+01 |        0 | 17038450 |        |        |    0 |    6 |        |        | 605000000908 |  40 |    2 |  2 |    2


Den vil så ligge en i tekstfil dog med nogle flere poster ;o)

Skrevet ons. d. 10. marts 2010 kl. 11:10:36| #5

mccookie
mccookie (25.442 point)
Hej igen

Jeg har sendt dig en mail med lidt mere data ;o)

Skrevet ons. d. 10. marts 2010 kl. 13:08:22| #6

mccookie
mccookie (25.442 point)
Hej Peter

Det er modtaget og ser rigtig fint ud....

Nu ville jeg jo gerne at den så kunne:

Sortere på maskine nr.
og samle posterne efter timefordeling.

Klokketime(hour)
00: 1 start
01: 3 starter etc.

Starter pr. dag:
DOY: Starter pr. maskine pr. dag

Skrevet fre. d. 12. marts 2010 kl. 10:19:52| #7

supertekst
supertekst (119.044 point)
supertekst-it.dk
Rem Version 2 - 12/3-10
Rem ===================
Const tekstFilNavn = "output.test.txt"
Const hour0kolonne = 15                            'kolonne "O"

Const systemArkNavn = "System"
Dim arkSys As Worksheet

Dim arkTot As Worksheet
Const totalArkNavn = "Totaler"

Dim tekstFilMappe As String

Dim ræk As Long, kolonne As Byte, antalRækker As Long
Public Sub IndlæsOgOrganiser()
On Error GoTo fejl

    Set arkSys = ActiveWorkbook.Sheets(systemArkNavn)
    arkSys.Activate
   
    nulstilData                                    'kalder sub-rutinen, "som navnet siger"
   
    findMappeMedTekstfil                            'kalder sub-rutinen, "som navnet siger"
   
    ræk = 1                                        'start-række for de indlæste data
    kolonne = 1                                    'start-kolonne -"-
   
    Application.ScreenUpdating = False              'slå skærm opdatering fra
   
    indlæsTekstFil                                  'kalder sub-rutinen, "som navnet siger"
   
    sorterIflgMaskine
   
    optællingPrMaskine
   
    Columns.AutoFit                                'tilpas kolonnebredde
   
    opbygTotaler
   
    Application.ScreenUpdating = True

    Exit Sub
   
fejl:
    Stop
    Resume Next
End Sub
Private Sub findMappeMedTekstfil()
    On Error GoTo fejl1
   
    Application.Dialogs(xlDialogOpen).Show
        tekstFilMappe = CurDir
       
        If Right(tekstFilMappe, 1) <> "\" Then
            tekstFilMappe = tekstFilMappe + "\"
        End If
    Exit Sub
   
fejl1:
    Resume Next
End Sub
Private Sub nulstilData()
    Range("A2:IV65000").Select
    Selection.ClearContents
    Range("A1").Select
End Sub
Private Sub indlæsTekstFil()
Dim linje As String
    Open tekstFilMappe + tekstFilNavn For Input As #1        'åbner inddata filen - tekstfiler identificeres med et nr (#1)
   
Rem Læs overskrift fra linje 1 - spring linje 2 over
        Input #1, linje                            'læs en hel linje ind (overskriften)
        indsætIregneArk linje                      'kalder sub-rutinen, "som navnet siger" - indlæste linje overføres
        Input #1, linje                            'indlæs linje 2 (skal ikke anvendes)
       
Rem læs resten indtil EOF
        While Not EOF(1)                            'sålænge der er linjer - læs & indsæt
            Input #1, linje
            indsætIregneArk linje                  'kalder sub-rutinen, "som navnet siger" - indlæste linje overføres
        Wend
    Close #1                                        'lukker tekstfilen
   
    antalRækker = ræk - 1
End Sub
Private Sub indsætIregneArk(linje)
Dim opdeltLinje As Variant, del As Byte
    opdeltLinje = Split(linje, "|")                'den indlæste linje opsplittes efter "|"
   
    For del = 0 To UBound(opdeltLinje)              'opdeltlinje indeholder nu et "antal rum", der er bestemt af opsplitningen
        Cells(ræk, kolonne) = Trim(opdeltLinje(del)) 'hvert "rum" indsættes i regnearket
        kolonne = kolonne + 1
    Next del
   
    ræk = ræk + 1                                  'alle "rum" indsæt - forøg rækkenr - reset kolonne
    kolonne = 1
End Sub
Private Sub sorterIflgMaskine()                    'sorter området: A2-Nsidsterække / Feltet MaskinNr
    Range("A2:N" & CStr(antalRækker)).Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
Private Sub optællingPrMaskine()                    'timeNr anvendes til placering af 1-tal
Dim timeNr As Byte
    For ræk = 2 To antalRækker
        timeNr = Cells(ræk, 14)
        pt = Cells(ræk, hour0kolonne + timeNr).Value
        Cells(ræk, hour0kolonne + timeNr).Value = Cells(ræk, hour0kolonne + timeNr).Value + 1
    Next ræk
End Sub
Private Sub opbygTotaler()                          'opbygges på arket Totaler
Dim maskinnr As Integer, totalRække As Integer, fraKolonne As Byte

    Set arkTot = ActiveWorkbook.Sheets(totalArkNavn)
   
    nulstilTotArk
   
    totalRække = 2
   
    For ræk = 2 To antalRækker
        fraKolonne = hour0kolonne
   
        If ræk = 2 Then
            maskinnr = Cells(ræk, 2)                'kolonne B
            overførTilTotArk maskinnr, ræk, totalRække, fraKolonne
        Else
            If Cells(ræk, 2) = maskinnr Then
                overførTilTotArk maskinnr, ræk, totalRække, fraKolonne
            Else
                maskinnr = Cells(ræk, 2)
                totalRække = totalRække + 1
                overførTilTotArk maskinnr, ræk, totalRække, fraKolonne
            End If
        End If
    Next ræk
   
    indsætTotalFormler totalRække + 1
End Sub
Private Sub nulstilTotArk()                        'slet indhold af totallinier
    arkTot.Range("A2:Z1000").ClearContents
End Sub
Private Sub overførTilTotArk(maskinnr As Integer, ræk As Long, totalRække As Integer, fraKolonne As Byte)
Dim totalkolonne As Byte
    With arkTot
        .Cells(totalRække, 1) = maskinnr
       
        For totalkolonne = 2 To 25
            .Cells(totalRække, totalkolonne).Value = .Cells(totalRække, totalkolonne).Value + arkSys.Cells(ræk, fraKolonne).Value
            fraKolonne = fraKolonne + 1
        Next totalkolonne
    End With
End Sub
Private Sub indsætTotalFormler(ræk)
Dim kol As Byte, kolonneBogstav As String
    With arkTot
        For kol = 2 To 25
            kolonneBogstav = Chr(kol - 1 + 65)
            .Cells(ræk, kol).Formula = "=Sum(" & kolonneBogstav & "2:" & kolonneBogstav & CStr(ræk - 1) & ")"
        Next kol
       
        .Cells(ræk, kol).Formula = "=Sum(B" & CStr(ræk) & ":Y" & CStr(ræk) & ")"
       
        .Columns.AutoFit
    End With
End Sub

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Farve område i excel diagram ( mellem 2 (eller flere)...

Oprettet den 4. februar 2012 kl. 09.16
endurancel giver 60 point for svar | Giv et svar »

søg i tekst - VBA

Oprettet den 4. februar 2012 kl. 00.44
Mathias- giver 15 point for svar | Giv et svar »

Hvordan beregnes antallet af rentetilskrivninger? (lav...

Oprettet den 3. februar 2012 kl. 15.25
haastrup giver 200 point for svar | Giv et svar »

Seneste guides

Den gode bruger
Adgang til NAS-server via WAN
Kollektion af Batch tutorials (FJERNET)
Tilpas din YouTube afspiller


   




Tips & Tricks fra PC World

Teaser billede

Sådan fjerner du pladskrævende metadata fra dine fotos

Det er langt fra altid, at dine billeders metadata såsom kameramodel og geografisk placering er vigtige at bevare. JPG & PNG Stripper kan luge ud i billedfilerne, så de fylder meget mindre....


Anmeldelser fra PC World

Teaser billede

Test: Superlet bærbar med mange muligheder

Toshiba har med Satellite Z830 skabt en af verdens letteste ultrabooks. Den vejer 1,1 kilo, og computeren på 13 tommer ser på papiret ud til at være en oplagt rejsekammerat. Men den lave vægt har...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Samsung Galaxy S III på vej

Samsungs bedst sælgende smartphone nogensinde får en efterfølger om kort tid.


Nyheder fra Computerworld

Teaser billede

Apple retter hele 51 sikkerhedshuller i Mac OS X

Apple lukker hele 51 sårbarheder i Mac OS X, hvoraf de fleste er kritiske. Se her, hvor hullerne er.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger