Microsoft Excel

Herbers Excel/VBA-Archiv

Sortierung m. Spalten ABHÄNGIG voneinander

Betrifft: Sortierung m. Spalten ABHÄNGIG voneinander von: Jen
Geschrieben am: 23.09.2014 01:48:31

Hallo liebes Forum,

ich schreibe gerade meine Bachelorarbeit, stehe total unter Zeitdruck und verzweifle langsam an einem Excel Problem, für das ich einfach keine Lösung finde..

Schwer zu beschreiben, aber ich würde gerne mehrere Spalten einer Tabelle nach darin enthaltenen Zahlenwerten sortieren, aber so, dass jeder Zahlenwert auch eine eigene Zeile hat (es sei denn, die Werte sind identisch). Ausserdem sollen die benachbarten Zellinhalte (z.b. Name) ebenfalls erhalten bleiben bzw. dem Zahlenwert "zugehörig bleiben".
Herrje, ich kann das nicht beschreiben :/
Beispiel ist angefügt (sorry, ich konnte auf die schnelle nur txt dateien hochladen..).

https://www.herber.de/bbs/user/92757.txt


Ich brauche eure Hilfe!
Vielen Dank für jegliche Antworten :)

  

Betrifft: ergibt für mich keinen Sinn ... von: neopa C (paneo)
Geschrieben am: 23.09.2014 08:04:56

Hallo Jen,

... weshalb soll denn Klaus dem Lauf 2 und Walter den Lauf 1 zugeordnet werden?


Gruß Werner
.. , - ...


  

Betrifft: AW: ergibt für mich keinen Sinn ... von: Jen
Geschrieben am: 23.09.2014 10:07:52



Stell dir vor, es wurden eben z.B. Marathonläufe gelaufen, bei der unterschiedliche Teilnehmer teilgenommen haben, manchmal hat aber auch ein Teilnehmer an 2 verschiedenen Läufen teilgenommen. Das ist nur ein Beispiel, es geht nur darum, nach Laufzeiten zu ordnen (aber eben so, dass die Spalten abhängig voneinander sind).

Ich habe ca. 20 verschiedene Proben (aka Läufe) mit verschiedenen chem. Inhaltsstoffen (aka "NAme"/Teilnehmer), die sich teilweise in den Proben wiederholen (Teilnehmer, die den Marathon mehrmals mitlaufen).

Gnaaaah ich komm damit nicht weiter :/

Grüße,
Jen


  

Betrifft: AW: ergibt für mich keinen Sinn ... von: fcs
Geschrieben am: 23.09.2014 11:48:45

Hallo Jen,

in der gewünschten Form kann man die Daten in Excel nicht sortieren.
Du müßtest die Daten anders zustammenstellen:

Lauf	Name	Zeit
1	Petra	1
1	Jürgen	1,7
1	Klaus	2,1
1	Hermann	4
2	Vera	1
2	Stafan	1,4
2	Walter	2,3
2	Frank	3,2
3	Vera2	1,1
3	Stafan	1,9
3	Walter2	2,1
3	Frank2	3,3

Dann kann man per Piovt-Tabellenbericht etwa folgende Darstellung erreichen
Summe Zeit		Lauf		
Zeit	Name	1	2	3
1	Petra	1		
	Vera		1	
1,1	Vera2			1,1
1,4	Stafan		1,4	
1,7	Jürgen	1,7		
1,9	Stafan			1,9
2,1	Klaus	2,1		
	Walter2			2,1
2,3	Walter		2,3	
3,2	Frank		3,2	
3,3	Frank2			3,3
4	Hermann	4		
Gruß
Franz


  

Betrifft: AW: ergibt für mich keinen Sinn ... von: Jen
Geschrieben am: 23.09.2014 11:55:32

Hallo Franz,

viiielen Dank erstmal! :)

Also so soll das lt. Betreuer eigentlich nicht aussehen, aber wenn es nur so geht...

Ich versuche es mal!


  

Betrifft: Nachfrage von: Sheldon
Geschrieben am: 23.09.2014 11:49:34

Hallo Jen,

kann dieselbe Zeit zweimal vorkommen im gleichen Lauf?

Gruß
Sheldon


  

Betrifft: AW: Nachfrage von: Jen
Geschrieben am: 23.09.2014 11:56:44

Hey Sheldon, danke der Nachfrage.

Nein, kann sie nicht.

LG


  

Betrifft: AW: Nachfrage von: Sheldon
Geschrieben am: 23.09.2014 13:25:40

Hallo Jen,

dann würde ich diese Vorgehensweise vorschlagen:

1. Alle Läufe untereinander kopieren und die Laufnummer in eine zusätzliche Spalte schreiben, wie fcs das ja schon erklärt hat.

2. Die Zeiten-Spalte kopieren, um dann alle doppelten Zeitwerte rauszulöschen. Ich habe das im Beispiel mal mit einer Formel gemacht, die du in den Zellen B13 bis B20 findest. Alle Zeilen, in denen in Spalte B eine 1 steht, sind doppelt und können raus.

3. Spaltenüberschriften für die Läufe anlegen, im Beispiel C12 bis D12. Beachte das Zellenformat und den Zelleninhalt!

4. Matrixfunktion sinngemäß wie in Zelle C13 eingeben.

Jetzt hast du alle Werte in einer Zeile, sofern die Zeit dieselbe ist und weißt auch aus welchem Lauf sie stammt.

https://www.herber.de/bbs/user/92766.xlsx

Gruß
Sheldon


  

Betrifft: AW: Sortierung m. Spalten ABHÄNGIG voneinander von: Adis
Geschrieben am: 23.09.2014 16:31:13

Hallo

es gibt noch eine Beispiel Mappe mit einer Makro Lösung.
Bitte testen ob es funktioniert. Rückmeldung waere nett.

https://www.herber.de/bbs/user/92772.xls

Gruss Adis


  

Betrifft: AW: Sortierung m. Spalten ABHÄNGIG voneinander von: Christian
Geschrieben am: 23.09.2014 18:57:44

hallo Jen,
da du von bis zu 20 Läufen sprichst, hier mein Vorschlag.
Voraussetzung:
- in "Tabelle1" stehen nur die Daten. keine weiteren Einträge darunter oder rechts daneben.
- in den ersten beiden Zeilen stehen die Überschriften, Daten beginnen ab Zeile 3
- pro Lauf werden immer 2 Spalten genutzt (Zeit, Name)
- es gibt keine Leerspalten zwischen den Läufen (Zeit, Name, Zeit, Name, ...)

Dann teste mal das folgende Makro.
Die Ergebnisse werden im Tabellenblatt "Tabelle2" eingetragen, ggf. vorher anlegen oder die Namen im Code anpassen.

Kommst du damit klar?

Gruß
Christian

Option Explicit

Sub TestIt()
    Dim wksSrc As Worksheet, wksDst As Worksheet
    Dim i As Long, j As Long, k As Long
    Dim vntSrc(), vntTmp(2)

    Set wksSrc = ThisWorkbook.Sheets("Tabelle1")        ' Tabelle mit Quelldaten
    Set wksDst = ThisWorkbook.Sheets("Tabelle2")        ' Ziel-Tabelle
    
    ' Daten einlesen
    With wksSrc
        For j = 1 To .UsedRange.Columns.Count Step 2    ' in 2er-Schritten ab Spalte A
            For i = 3 To .UsedRange.Rows.Count          ' ab Zeile 3
                If .Cells(i, j) <> "" Then
                    ReDim Preserve vntSrc(2, k)
                    vntSrc(0, k) = j                    ' Spalten-Nr
                    vntSrc(1, k) = .Cells(i, j)         ' Zeit
                    vntSrc(2, k) = .Cells(i, j + 1)     ' Name
                    k = k + 1
                End If
            Next
        Next
    End With
    
    ' sortieren (BubbleSort ist langsam, sollte hier aber ausreichen)
    For i = 0 To UBound(vntSrc, 2)
        For j = i To UBound(vntSrc, 2)
            If vntSrc(1, j) < vntSrc(1, i) Then
                For k = 0 To 2
                    vntTmp(k) = vntSrc(k, j)
                    vntSrc(k, j) = vntSrc(k, i)
                    vntSrc(k, i) = vntTmp(k)
                Next
            End If
        Next
    Next
    
    ' Ergebnis in Ziel-Tabelle schreiben
    With wksDst
        j = 0
        k = 3
        .Cells.Clear
        ' erste 2 Zeilen von Quell-Tabelle kopieren
        wksSrc.Rows(1).Resize(2).Copy .Cells(1, 1)
        ' Daten ab Zeile 3 eintragen
        For i = 0 To UBound(vntSrc, 2)
            Do While vntSrc(1, j) = vntSrc(1, i)
                .Cells(k, vntSrc(0, j)) = vntSrc(1, j)      ' Zeit
                .Cells(k, vntSrc(0, j) + 1) = vntSrc(2, j)  ' Name
                j = j + 1
                If j > UBound(vntSrc, 2) Then Exit Do
            Loop
            k = k + 1
            i = j - 1
        Next
    End With
    
    ' Speicher freigeben
    Erase vntSrc
    Set wksSrc = Nothing
    Set wksDst = Nothing
End Sub



  

Betrifft: AW: Sortierung m. Spalten ABHÄNGIG voneinander von: Jen
Geschrieben am: 23.09.2014 21:42:07

DANKE euch allen! Wirklich, ihr seid super :)

Ich brauche jetzt erstmal, bis ich da überall durchsteige, ich habe noch nie ein Makro benutzt.

Ich werde berichten, wenn es klappt!

LG


  

Betrifft: AW: Sortierung m. Spalten ABHÄNGIG voneinander von: Jen
Geschrieben am: 23.09.2014 21:43:05

DANKE euch allen! Wirklich, ihr seid super :)

Ich brauche jetzt erstmal, bis ich da überall durchsteige, ich habe noch nie ein Makro benutzt.

Ich werde berichten, wenn es klappt!

LG


 

Beiträge aus den Excel-Beispielen zum Thema "Sortierung m. Spalten ABHÄNGIG voneinander "