• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Alfabnumeriek sorteren

Status
Niet open voor verdere reacties.

StephenL1991

Gebruiker
Lid geworden
8 apr 2009
Berichten
7
Goeiemiddag,

Ik ben stage aan het lopen op het gemeentehuis van Sint-Truiden (België).
Nu heb ik hier een database van printers en nog andere dingen.
Deze moet ik alfabetisch sorteren, maar dat zijn zo'n 40 pagina's en dat moet met Excel ook gaan. (De versie is Excel 2003).

Een voorbeeld hoe het is opgemaakt:
Het zijn 3 samengevoegde rijen die samen moeten blijven (belangrijk!)
-Printernaam
-Naam van persoon
-IP-Adres
(dit herhaalt zich 11 keer op een pagina)

MAAR, alleen de naam van de printer moet alfabetisch gesorteerd worden, dus een voorbeeld van een printernaam: HPLJ12345, dan moet het eerst alfabetisch gesorteerd worden, en daarna alfanumeriek.

In de bijlage heb ik een voorbeeld gemaakt van zo'n blad. Ik kon de echte gegevens niet nemen omdat dit vertrouwelijke gegevens zijn.

Alvast dank bij voorbaat
StephenL
 

Bijlagen

Hoi,

Ben heel benieuwd of iemand voor je sorteervraag een oplossing heeft, maar ik dénk het niet.
Je database zit - zoals je wel zult begrijpen volkomen 'brak' in elkaar. Als je voorbeeld de daadwerkelijk structuur is, dan zal je bij de pogingen te sorteren altijd foutmeldingen krijgen.
Haal je de lege rijen weg, dan kloppen je samenhangende gegevens na sortering niet meer.
Kortom: onmogelijk.
 
Laatst bewerkt:
Moeten die samengevoegde cellen blijven bestaan? Samengevoegde cellen binnen Excel is eigenlijk een no-go.

edit: als die samengevoegde cellen weg mogen, is het mits wat foefelen mogelijk. Anders ga je al VBA nodig hebben om er via een omweg te komen.
edit 2: Even voor de duidelijkheid: met samengevoegde cellen bedoel ik wel degelijk bv. c2:g2 dat nu eigenlijk 1 cel is ipv 5 aparte. Ik doel niet op het feit dat de 3 rijen telkens samen moeten blijven.
 
Laatst bewerkt:
Alvast bedankt voor de snelle reacties.
Als het echt moet, kan ik de samengevoegde cellen tijdelijk verwijderen, en kan ik ze daarna terug samenvoegen, dan staan ze tenminste al alfanumeriek gerangschikt :thumb:

Edit: C2:G2 mag voorlopig gesplitst worden
 
Stappenplan op basis van je voorbeeldbestand.

* Formule in H2: =C2
In H3 tem H6 zet je dezelfde formule. Dus =C2

*Selecteer H2:H6 en trek met de vulgreep door tot onder de laatste gegevens (2 legen rijen op het laaste niet vergeten mee te nemen. Concreet dus doortrekken tot H56).

*Nu staat in kolom H in elke cel de printernaam van die "blok" van gegevens

*Selecteer kolom C tem G, en verwijder de samengevoegde cellen.(Via celeigenschappen het samenvoegen voor alle cellen afzetten).

*Selecteer je data C2:H56 en kies sorteren. Kies hier sorteren van A-Z op kolom H.

*Verwijder nu (hulp)kolom H. Je gegevens staan gesorteerd.

*Om je samengestelde cellen terug te herstellen (ik hoop dat je een goede reden hebt om die samen te voegen, want samengevoegde cellen zijn een ramp) kan je volgende VBA code gebruiken:

Code:
Sub SAMEN()
For Each cel In Selection
    If Len(cel.Value) <> 0 Then
        With Range("c" & cel.Row & ":G" & cel.Row)
            .HorizontalAlignment = xlCenter
            .Merge
        End With
    End If
Next cel
End Sub

Selecteer eerst C2:C56 alvorens de code uit te voeren.
 
Hiermee moet je toch een eind kunnen komen:

Code:
Sub tst()
  sq = ThisWorkbook.Sheets(1).UsedRange.Resize(, 4)
  For j = 1 To UBound(sq)
    If sq(j, 1) <> "" Then
      For jj = 1 To Len(sq(j, 1))
        If Val(Mid(sq(j, 1), jj, 1)) > 0 Then
          sq(j, 2) = Mid(sq(j, 1), jj)
          sq(j, 1) = Left(sq(j, 1), jj - 1)
          Exit For
        End If
      Next
      sq(j, 3) = sq(j + 1, 1)
      sq(j, 4) = sq(j + 2, 1)
      sq(j + 1, 1) = ""
      sq(j + 2, 1) = ""
       j = j + 2
    End If
  Next
  With ThisWorkbook.Sheets(2)
    .Cells(1, 1).Resize(UBound(sq), UBound(sq, 2)) = sq
    .UsedRange.Sort [A1], , [B1]
    sq = UsedRange
    For j = 1 To UBound(sq)
      sq(j, 1) = sq(j, 1) & sq(j, 2)
    Next
    .Cells(1, 1).Resize(UBound(sq), UBound(sq, 2)) = sq
    .Columns(2).Delete
  End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan