Avatar billede krass Nybegynder
13. november 2014 - 10:42 Der er 5 kommentarer

Flere sorteringer og gennemløb

Kan jeg være så heldig at nogen kan gennemskue hvordan jeg laver følgende sortering(er)/gennemløb:

Jeg har en stor mængde data som består af ca. 3000 M_Numre, som igen har en dato reference registreret, primært én pr døgn - men som også kan være fejlet og derfor ikke er tilgængelig, eller der kan findes flere registreringer pr. døgn.
Ud fra ovenstående vil jeg gerne finde/sortere M_Numrene og sortere i datoorden. Efterfølgende skal der foretages et antal beregninger på data som er tilknyttet datasættet: M-Numre og datoer.
Jeg har tidligere lavet kodning i Excel som foretager disse beregninger, men ønsker at lave dette i VBA for at undgå en masse manuel copy/paste arbejde inden resultaterne på beregningerne ...

Her er udsnit af datasættet, inkl. Excel-kode: (copy/paste til Excel, så gir det mening)
M_Number    F_Number    F_Name    F_Address    Date    FC    Hour    E1    V1    T1    T2    E8    E9        FC  [=HVIS(F2<>0;"X";"Y")]    Hour  [=HVIS(A2=A3;HVIS(G2-G3=24;"X";"Y");"Z")]    E1_MWh  [=HVIS(A2=A3;(H2-H3);"X")]    V1_m3  [=HVIS(A2=A3;(I2-I3);"X")]    &#916;t  [=HVIS(A2=A3;(L2-L3)/(I2-I3)-(M2-M3)/(I2-I3);"X")]    FGR_Temp  [=HVIS(A2=A3;SLÅ.OP(U2;$V$1:$AY$2);"")]    GF_Temp  [=HVIS(A2=A3;((L2-L3)/(I2-I3));"X")]    GR_Temp  [=HVIS(A2=A3;((M2-M3)/(I2-I3));"X")]    -    Reference til SLÅ.OP:                                                                                                                   
5328408    1002300            30-09-2014 00:03    0    15972    244,62    7675,6    65,68    42,19    550710    338290        Y    X    0,21    9,2    20,7    34,0    65,2    44,6        < 50    50    51    52    53    54    55    56    57    58    59    60    61    62    63    64    65    66    67    68    69    70    71    72    73    74    75    76    77    >77
5328408    1002300            29-09-2014 00:04    0    15948    244,41    7666,4    66,72    37,14    550110    337880                                            36    36    36    36    36    35    35    35    35    35    35    34    34    34    34    34    34    33    33    33    33    33    33    32    32    32    32    32    32    31
5328408    1002300            28-09-2014 00:04    0    15924    244,17    7656,7    67,73    49,4    549470    337440                                                                                                                                                               
5328408    1002300            27-09-2014 00:03    0    15900    243,92    7647,1    68,58    47,9    548830    337030                                                                                                                                                               
5328408    1002300            26-09-2014 00:03    1    15876    243,65    7637    66,11    39,99    548160    336590                                                                                                                                                               
5328408    1002300            25-09-2014 00:04    0    15852    243,38    7627,8    68,71    48,2    547540    336200                                                                                                                                                               
5328412    1000600            30-09-2014 00:01    0    15976    2348,4    61458    66,41    47,59    4757200    2722600                                                                                                                                                               
5328412    1000600            29-09-2014 00:03    0    15952    2346,7    61375    66,49    49,51    4751700    2718700                                                                                                                                                               
5328412    1000600            28-09-2014 00:02    0    15928    2344,6    61286    68,33    48,11    4745800    2714600                                                                                                                                                               
5328412    1000600            27-09-2014 00:02    256    15904    2342,5    61202    69,17    46,83    4740100    2710700                                                                                                                                                               
5328412    1000600            26-09-2014 00:02    0    15880    2340,5    61120    67,04    48,87    4734600    2707000                                                                                                                                                               
5328412    1000600            25-09-2014 00:02    0    15856    2338,5    61043    68,94    47,93    4729400    2703500
Avatar billede finb Ekspert
21. november 2014 - 16:26 #1
Kunne du lægge excel-filen på gupl !
Avatar billede krass Nybegynder
21. november 2014 - 17:30 #2
Hej finb, filen er lagt op på dette link http://gupl.dk/716582/ ...

Jeg er har i mellemtiden ledt yderligere og er måske kommet lidt tættere på målet. Har læst mig til at der skal laves en Incremental søgning i et loop som deler M-Number op og ud fra dette kan jeg måske lave en kalkulation på de enkelte datoer for det enkelte M_Number og til sidst et gennesmsnit i den specifikke periode.

tak for interessen ... Kim
Avatar billede finb Ekspert
24. november 2014 - 13:10 #3
Se post til dig
finb
Avatar billede finb Ekspert
03. december 2014 - 14:47 #4
Udkast til makro, du kan finpudse:

'Stil dig i celle A1               
'Marker alt:  ctrl + *               
'Sorter efter:  1:  M-nr, stigende -og 2:  efter dato, 'faldende::

' markerAlt_og_sorter ' Macro
'
    Range("A1").Select
    Selection.CurrentRegion.Select
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("A2:A13"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Ark1").Sort
        .SetRange Range("A1:M13")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("A2:A13"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("E2:E13"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Ark1").Sort
        .SetRange Range("A1:M13")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Dim kola as range  ‘ = hele kolonne A
Dim cellA as range ‘ enkelt-celler i kollonne A
               
'kolonnen med 0,1,2(mangler !),4,8,16,osv. har jeg navngivet "potenserAf2"

'kolonnen med fejlmeldinger har jeg navngivet "fejlmeldinger"

for each CellA in kolA               
               
  with CellA           
    if .value > 0 then       
      .offset(0,14) = lookup(cellA.offset(0,5);potenserAf2;FejlMeldinger)

'lookup kigger i 5. kolonne til højre for celleA og skriver resultatet i 14. kolonne.   
               
'Og temperaturerne ser sådan ud:

=lookup(A22;{0;54;60;66;72;78};{36;35;34;33;32;31})   

Resten af hvis-formlerne kan du lave
med .offset(antal kolonners afstand)

'Prøv dig frem, og
skriv igen, hvis du
går død.

Mvh finb
Avatar billede krass Nybegynder
05. december 2014 - 17:24 #5
- Hej finb, har lige kort kigget på din kode, og håber jeg får lidt mere tid i weekenden til at fordybe mig. Som du nok har luret så er jeg absolut ikke nogen haj til VBA, men er yderst taknemmelig for din indsats og vil hælde alle de point jeg har efter dig, når jeg finder ud af hvordan det foregår :-)
mvh Kim
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester