Avatar billede pharlap Nybegynder
11. december 2005 - 14:49 Der er 14 kommentarer og
1 løsning

Sortering i ark

Jeg har et excel ark med udtræk af telefonnumre.
Kolonne A indeholder mobilnumre som allerede er sorteret, og ellers er de resterende oplysninger om samtaletid , pris osv.

Feks
    A            B        C      D                            1. Mobilnnr  samtaletid  Pris  Netto
2. 12345678    1:20      12,50  10,50
3. 12345678    0,53      09,25  8,25
4. 98765432    1,53      11,25  8,11
5. 98765432    2,20      13,12  10,11
6. 21346598    11,36      25,16  18,25
7. 21346598    05,36      31,10  28,25
8. 21346598    17,25      76,10  64,11


Kan man udforme en makrokode der kigger i Kolonne A fra A2 og finder hvor mange rækker der er  af hvert nummer og så opretter et nyt ark med navnet på nummeret..
Feks finder den i kolonne A nummret 12345678 og det antal gange dette nummer står nedaf, og opretter et nyt ark med navnet 12345678 og flytter alle disse data over til det nye ark.
Sådan skal den gøre indtil at hele arket er flyttet over.

Dernæst er jeg interesseret i at den i bunden af hvert ark hvor det nu end stopper med data, kan sætte Sum funktionen ind under de kolonner hvor det handler om kroner og ører… i dette tilfælde kolonne C og D kan man endvidere i dette få den til at lave disse felter med Rød baggrund og med understregning (kanter) med en overliggende og 2 understregninger?

Er det endvidere muligt at sætte disse 2 makroer sammen til én og få den tilføjet i min menu øverst?

Håber nogen kan hjælpe med dette.. for jeg er gået tør for ideer..
Avatar billede pharlap Nybegynder
11. december 2005 - 14:49 #1
øv håber nogen kan tyde den.. den ser noget rod ud den opstilling.. :O(
Avatar billede pharlap Nybegynder
11. december 2005 - 14:52 #2
Lige et tillægsspørgsmål...
Jeg overvejede at lave dette i en form hvor den tæller nuværende antal Ark og spørger hvilke ark jeg vil have makroen til at køre på...
Sådan at den tæller nuværende antal ark og jeg markerer hvilke ark og trykker på "kør" eller lign.

Er dette muligt?
Avatar billede bak Forsker
11. december 2005 - 23:48 #3
Prøv at køre denne makro, når du står på hovedarket.
Bemærk at den ikke flytter data, den kopier den over, dvs. at de ikke forsvinder fra hovedarket

Option Base 1
Option Explicit

Sub AutoFilterModel()
'Created by Tommy bak Christensen 20-8-2002

Dim Uniq_Matrix As New Collection
Dim TempMatrix, Item
Dim StartSheet As Worksheet
Dim rngStart As Range, rngIndexCol As Range
Dim i As Long, lLC As Long
Dim iCounter As Integer, iUniqTotal As Integer, iFilterCol As Integer
Dim SH As Worksheet
  Set StartSheet = ActiveSheet
  With Application
      .DisplayStatusBar = True
      Set rngStart = StartSheet.Range("A1")
      Set rngIndexCol = StartSheet.Range("B1")
      .Calculation = xlCalculationManual
      .ScreenUpdating = False
  End With
  '***fyld alle data i kol A over i et midlertidig array
  With rngIndexCol
      TempMatrix = Range(Cells(rngStart.Row, .Column), Cells(65536, .Column).End(xlUp).Address)
      iFilterCol = .Column - rngStart.Column + 1
  End With
  '***træk de unikke items ud i en collection
  On Error Resume Next
  For i = 2 To UBound(TempMatrix)
      Uniq_Matrix.Add TempMatrix(i, 1), CStr(TempMatrix(i, 1))
  Next i
  '***Frigør TempMatrix
  Set TempMatrix = Nothing
  iUniqTotal = Uniq_Matrix.Count
  '***med alle unikke items, autofilter og kopier til nyt ark
  For Each Item In Uniq_Matrix
      With rngStart.Cells(1, 1)
        .AutoFilter Field:=iFilterCol, Criteria1:=Item
        .CurrentRegion.Copy
      End With
      Set SH = Worksheets.Add
      SH.Name = Item
      SH.Range("A1").PasteSpecial (xlPasteValues)
      'find sidste celle
      lLC = SH.Range("A1").End(xlDown).Row + 1
      ' indsæt summer og farv samt linier
      SH.Range("C" & lLC).Formula = "=SUM(C2:C" & lLC - 1 & ")"
      SH.Range("C" & lLC).Copy SH.Range("C" & lLC).Offset(0, 1)
      With SH.Range("C" & lLC & ":D" & lLC)
        .Interior.ColorIndex = 3
        .Interior.Pattern = xlSolid
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
        .Borders(xlEdgeBottom).LineStyle = xlDouble
        .Borders(xlEdgeBottom).Weight = xlThick
      End With

      iCounter = iCounter + 1
      Application.StatusBar = iCounter & "  af  " & iUniqTotal & " kopieret"
  Next

  rngStart.AutoFilter
  With Application
      .CutCopyMode = False
      .Calculation = xlCalculationAutomatic
      .ScreenUpdating = True
      .StatusBar = False
  End With
  Set Uniq_Matrix = Nothing
End Sub
Avatar billede pharlap Nybegynder
12. december 2005 - 00:53 #4
Hej Bak
Tak for dit svar.. men det er ikke autofilter funktionen jeg er ude efter, men at den kan oprette og døbe et ark for hvert nummer hvor den flytter alle data til  dette ark... :O/
Avatar billede bak Forsker
12. december 2005 - 07:50 #5
Det er jo netop det makroen gør.....
Avatar billede pharlap Nybegynder
12. december 2005 - 08:38 #6
Hov ja det kan jeg godt se nu.
Det er fordi at på den jeg tester af har jeg 2 ark.. på det første ark er der mange numre nedaf, og her opretter den ikke noget ark, den laver blot autofilter funktionen.
På ark 2 står der kun 1 nummer nedaf, og her sætter den ikke autofilter på, men opretter et nyt ark og flytter disse data over med sum nederst.

Hvorfor gør den ikke det med det ark der er fyldt helt ud ned til række 65536?
Avatar billede pharlap Nybegynder
12. december 2005 - 08:40 #7
Jeg forsøgte lige at fjerne de nederste linier, og så virker den rigtigt.
Hvordan kan det egenligt være.. at hvis arket er fyldt helt ud.. så vil den ikke, men da jeg fjernede 5 linier så kørte den efter hensigten.

Kan jeg mens disse ark bliver oprettet, få makroen til at omdøbe hvert ark til det nummer de indeholder?
Avatar billede bak Forsker
12. december 2005 - 08:57 #8
Du skal lige ændre denne linie
Set rngIndexCol = StartSheet.Range("B1")

til

Set rngIndexCol = StartSheet.Range("A1")
Avatar billede bak Forsker
12. december 2005 - 09:06 #9
Avatar billede pharlap Nybegynder
12. december 2005 - 17:47 #10
Ja se der var noget af det rigtige...

men nu har jeg kopieret koden ind i det ark jeg prøver af på.
På ark1, er der 65536 incl overskriften udfyldt, så tager den kun og laver Autofilter funktionen, og stopper her uden at melde fejl og uden at kopiere til nye ark.
Rydder jeg blot en linie i dette ark så vil den gerne?

Er der en kode man kan lægge ind så at den sletter de oprindelige ark der ligger.
Endvidere, kan den Tælle nuværende antal ark og spørge om hvilke ark denne makro skal køres på, eller at den blot kører alle ark igennem fra start når man trykker på knappen?
Avatar billede bak Forsker
13. december 2005 - 15:56 #11
Prøv lige at ændre denne linie
TempMatrix = Range(Cells(rngStart.Row, .Column), Cells(65536, Column).End(xlUp).Address)

til
TempMatrix = Range(Cells(rngStart.Row, .Column),Cells(1, Column).End(xlDown).Address)
Avatar billede and_usa Nybegynder
15. december 2005 - 15:07 #12
Hvis det man sortere på er i kolonne K, hvor skal man så ændre i koden?
Avatar billede bak Forsker
15. december 2005 - 16:35 #13
Set rngIndexCol = StartSheet.Range("B1")
ændres til
Set rngIndexCol = StartSheet.Range("K1")
Avatar billede pharlap Nybegynder
06. september 2006 - 16:55 #14
Hej Bak
Denne er godt nok gammel men du skal have dine point, så gider du lige smide et svar så jeg kan lukke den
Avatar billede bak Forsker
07. september 2006 - 18:41 #15
ok :-)
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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