Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blöcke sortieren

Blöcke sortieren
Larissa
Hallo Excelexperten,
Ich möchte eine Liste in Blöcken sortieren und damit Ihr Euch das besser vorstellen könnt, lade ich die Liste einmal hoch.
https://www.herber.de/bbs/user/63560.xls
Die Liste soll nach den Namen sortiert werden und die jeweils 2 folgenden Zeilen gehören auch zu dem Namen und dürfen nicht getrennt werden.
Also eine Liste könnte ich ja manuell sortieren, ich habe aber sehr viele davon und da würde ich Tage dransitzen. Deshalb benötige ich eine tolle Lösung.
Gruß Larissa

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Blöcke sortieren
31.07.2009 20:05:03
Josef
Hallo Larissa,
probier mal.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub BlockSort()
  Dim rng As Range, lngLast As Long
  
  On Error GoTo ErrExit
  GMS
  
  lngLast = Cells(Rows.Count, 1).End(xlUp) + 3
  
  Set rng = Range(Cells(2, 1), Cells(lngLast, 9))
  
  With rng
    .Columns(8).Formula = "=IF(ISBLANK(A2),H1,A2)"
    .Columns(9).Formula = "=IF(ISBLANK(B2),I1,B2)"
    .Sort Key1:=.Cells(1, 9), Order1:=xlAscending, _
      Key2:=.Cells(1, 8), Order2:=xlAscending, _
      Header:=xlNo
    .Columns(8).ClearContents
    .Columns(9).ClearContents
  End With
  
  
  
  ErrExit:
  With Err
    If .Number <> 0 Then MsgBox "Fehler " & .Number & vbLf & vbLf & _
      .Description & vbLf & vbLf & "In Prozedur (BlockSort) in Modul Modul1", _
      vbExclamation, "Fehler in Modul1 / BlockSort"
  End With
  
  GMS True
End Sub

Public Sub GMS(Optional ByVal Modus As Boolean = False)
  
  Static lngCalc As Long
  
  With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Not Modus Then lngCalc = .Calculation
    If Modus And lngCalc = 0 Then lngCalc = -4105
    .Calculation = IIf(Modus, lngCalc, -4135)
    .Cursor = IIf(Modus, -4143, 2)
    
  End With
  
End Sub

Gruß Sepp

Anzeige
AW: Blöcke sortieren
31.07.2009 21:34:25
Larissa
Hi Sepp,
danke für die Hilfe. Mit so einem komplizierten Makro habe ich ja gar nicht gerechnet. Das fuktioniert toll für die Tabelle, die ich hochgeladen habe, aber eigentlich ist die Liste etwas größer. Jetzt werde ich mal mit meinen kleinen VBA-Kenntnissen versuchen Dein Makro anzupassen. Ich melde mich, wenn es funktioniert....
Lieben Gruß, Larissa
AW: Blöcke sortieren
01.08.2009 09:03:24
Larissa
Guten Morgen und hallo nochmal,
ich habe es geschafft, das Makro von Sepp an meine Tabelle anzupassen - *stolz ;-)
Leider ergeben sich nun zwei neue Fragen:
1. Nach dem Sortieren entsteht zwischen Zeile 877 und 39450 eine Lücke. Wahrscheinlich hat das Makro das Ende der Zeile nicht richtig erkannt, oder?
2. Spalte K bis R sind mit Formeln versehen. Nach der Sortierung werden nicht die richtigen Zellbezüge mitgenommen, so dass die falschen Werte bei den Namen stehen. Es ist wichtig, dass die Formeln stehenbleiben, weil man oben in Zeile 2 die Werte justieren können muss.
Ich lade noch mal die vollständige Tabelle mit meinem angepassten Makro von Sepp hoch...
https://www.herber.de/bbs/user/63564.xls
Ich würde mich schlappfreuen, wenn Ihr mir hier noch einmal weiterhelfen könnt :-)
Gruß Larissa
Anzeige
AW: Blöcke sortieren
01.08.2009 10:26:29
Tino
Hallo Larissa,
teste mal diesen Code.
Dieser sollte sich automatisch an die Zeilen und Spaltenanzahl anpassen.
Einigste Voraussetzung ist,
die Blöcke müssen wie in Deinem Beispiel immer aus 4 Zeilen bestehen,
sonst funzt es mit dem Ende nicht.
Sub Teste_Mal()
Dim Bereich As Range
Dim iCalc As Integer
Set Bereich = Range("A1").End(xlDown)
Set Bereich = Range(Bereich, Tabelle1.UsedRange.Find("*", , xlValues, 1, 1, 2, False, False, False).Offset(1, 0))
Set Bereich = Range(Bereich, Bereich.Columns(Bereich.Columns.Count).Offset(0, 2))

With Application
  iCalc = .Calculation
 .ScreenUpdating = False
 .EnableEvents = False
 .Calculation = xlCalculationManual

    With Bereich.Columns(Bereich.Columns.Count - 1)
       .FormulaR1C1 = "=IF(RC4<>"""",RC4,R[-1]C)"
       .Offset(0, 1).FormulaR1C1 = "=ROW()"
       Bereich.Sort .Cells(1, 1), xlAscending, .Offset(0, 1).Cells(1, 1), , xlAscending, , , xlNo
       .Offset(0, 1).EntireColumn.Delete
       .EntireColumn.Delete
    End With
 
 .ScreenUpdating = True
 .EnableEvents = True
 .Calculation = iCalc
End With

End Sub
Gruß Tino
Anzeige
AW: Blöcke sortieren
01.08.2009 10:44:06
Larissa
Hallo Tino, wie schön von Dir zu hören :-)
Erst mal vielen Dank für Deine Fachmann-Hilfe!
Der erste Punkt mit den Leerzeilen ist mit Deinem neuen Makro behoben - Super!!
Der zweite aber noch nicht, weil die Formeln nicht mit dem Namen mitgenommen werden, sondern einfach so stehen bleiben und damit bekommen die Namen nach der Sortierung falsche Werte. Oder ist das nur bei mir eine Exceleinstellung unter Optionen / Berechnung oder so?
Lieben Gruß Larissa
PS: die Blöcke bestehen immer aus 4er Zeilen. Das ist also ok.
AW: Blöcke sortieren
01.08.2009 10:56:16
Tino
Hallo,
müssen die Formeln bestehen bleiben oder können diese Durch feste Werte ersetzt werden?
Gruß Tino
Anzeige
AW: Blöcke sortieren
01.08.2009 11:06:05
Larissa
sie sollten bestehen bleiben, weil die Anfangswerte in Spalte K bis M (Zeile2) noch justiert werden.
Ist das zu kompliziert?
AW: Blöcke sortieren
01.08.2009 11:39:39
Tino
Hallo,
habe eine andere Formel eingebaut und noch eine Hilfsspalte in S mit Nummern.
Sortiermakro darauf angepasst.
Jetzt müsste das Ergebnis richtig sein, kannst ja mal selbst testen.
Hier Deine Tabelle noch nicht sortiert als zip weil größer 300kb
https://www.herber.de/bbs/user/63565.zip
Gruß Tino
DANKE TINO !!!
01.08.2009 12:03:55
Larissa
WWWAAAUUU !!! Das funktioniert richtig toll :-)
Die Formeln sind ja komplett umgebaut, das ist ja irre - Danke nochmal *x*
Anzeige
danke für die positive Rückmeldung oT.
01.08.2009 12:13:59
Tino
AW: ohne Makro
01.08.2009 22:27:36
Daniel
Hi Larissa
probier doch mal folgendes:
1. die Spalte mit den Namen (B) markieren
2. BEARBEITEN - GEH ZU - INHALTE - LEERZELLEN klicken
3. in die Bearbeitungszeile klicken und dort folgende Formel für die aktive Zelle (B2) eintragen:
=WENN(C2="";"";B1)
4. nochmal die ganze Spalte B kopieren und mit INHALTE EINFÜGEN - WERTE die Formel durch Werte ersetzen
5. jetzt steht überall der Name davor und du kannst einfach nach dem Namen sortieren.
Gruß, Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige