Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
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

Bereich m. unbekannten sortieren(Spalte)

Bereich m. unbekannten sortieren(Spalte)
26.02.2022 12:11:37
shahsad
Hallo Forumsgemeinschaft,
ich bin starte zur Zeit meine ersten Berührungen mit Excel vba.
Mein Sortierproblem möchte ich direkt an einem Beispiel beschreiben: ( https://www.herber.de/bbs/user/151411.xlsm )
verschiedene Angler haben verschiedene Fische gefangen.
In Spalte D&E sind Name und Stadt, in einem unbekannten Bereich sind die Fische die gefangen wurden und dahinter kommt deren Erfahrung.
(im besten Fall sollte die Spalte mit Erfahrung hinter dem Fang stehen bleiben)
Mein Ziel ist es:
alle verschiedenen und vorkommenden Fische jeweils als Überschrift in eine eigene Spalte zugeben und in dem Bereich die Fische in die richtige Spalte zu sortieren.
Ich habe es versucht, aber keine Lösung gefunden.
Könnt ihr mir bitte Helfen mit einem Code?
tausend Dank

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bereich m. unbekannten sortieren(Spalte)
26.02.2022 13:33:01
onur
Deine Beschreibung ist sehr schwammig. Zeig doch mal in der Tabele auch, wie es HINTERHER aussehen soll.
AW: Bereich m. unbekannten sortieren(Spalte)
26.02.2022 13:39:37
shahsad
Hallo Onur,
vielen Dank für deine schnelle Antwort.
https://www.herber.de/bbs/user/151415.xlsm
Im Sheet Ziel ist die Tabelle wie ich sie am Ende gerne hätte.
Wobei ich nicht weiß wie viele verschiedene und welche Fische es in der Tabelle gibt.
Über Lösungsvorschläge bin ich sehr dankbar.
AW: Bereich m. unbekannten sortieren(Spalte)
26.02.2022 16:02:48
shahsad
TOP!
vielen Dank das ist so ziemlich das was ich suchte!
bin noch immer dabei den Code nachzuvollziehen, weil das meine aktuellen Kenntnisse übersteigt, aber vielen Dank!
AW: Bereich m. unbekannten sortieren(Spalte)
26.02.2022 18:11:08
onur
Ganz einfach: Name und Stadt wird über Formel kopiert. Sobald jedoch ein Fisch (F bis H) eingetragen oder verändert wird, schaut das Makro, ob im Zielblatt dieser Fisch als Spaltentitel vorliegt, wenn ja, wird der Fisch in diese Spalte eingetragen, wenn nein, in die nächste leere Spalte, und der neue Spaltentitel wird auch nachgetragen. Die Zeile bleibt bei beiden Versionen die Selbe, und zwar die gleiche wie auf dem Ausgangsblatt.
Anzeige
AW: Bereich m. unbekannten sortieren(Spalte)
28.02.2022 09:23:43
Anfänger
Hi,
vielen Dank für die Erklärung!
ich habe noch eine Anschlussfrage:
Da ich das Sheet mit der Fischtabelle vorher mittels einem anderen vba Code erst erstelle, wie kann ich ein private sub in diesem worksheet mit erstellen ?
(ich kann es ja nicht in einem Sheet erstelen, dass es vorher noch nicht gibt. ich hoffe die Frage ist irgendwie verständlich)
AW: Bereich m. unbekannten sortieren(Spalte)
26.02.2022 16:51:25
Daniel
Hi
du könntest diesen Code drüberlaufen lassen.

Public Sub sortierung()
Dim arr
Dim erg
Dim dicFische As Object
Dim z As Long, s As Long
Dim ZählerFische As Long
ZählerFische = 3
arr = Range("D1").CurrentRegion.Value
Set dicFische = CreateObject("Scripting.dictionary")
ReDim erg(1 To UBound(arr, 1), 1 To 3)
erg(1, 1) = arr(1, 1)
erg(1, 2) = arr(1, 2)
erg(1, 3) = arr(1, UBound(arr, 2))
For z = 2 To UBound(arr, 1)
erg(z, 1) = arr(z, 1)
erg(z, 2) = arr(z, 2)
erg(z, 3) = arr(z, UBound(arr, 2))
For s = 3 To UBound(arr, 2) - 1
If arr(z, s)  "" Then
If Not dicFische.exists(arr(z, s)) Then
dicFische(arr(z, s)) = dicFische.Count
ReDim Preserve erg(1 To UBound(erg, 1), 1 To dicFische(arr(z, s)) + 4)
erg(1, dicFische(arr(z, s)) + 4) = arr(z, s)
End If
erg(z, dicFische(arr(z, s)) + 4) = arr(z, s)
End If
Next
Next
With Range("D1").Resize(UBound(erg, 1), UBound(erg, 2))
.Value = erg
.Cells(1, 3).Value = True
.Offset(0, 2).Resize(, .Columns.Count - 2).Sort key1:=.Cells(1, 3), order1:=xlAscending, Header:=xlNo, Orientation:=2
.Cells(1, UBound(erg, 2)) = arr(1, UBound(arr, 2))
End With
achtung, der Code überschreibt die Ausgangsdaten, zum testen hier mal beim unteren With Range("D1") vielleicht einen anderen Zellbereich eintragen.
außerdem sortiert der Code auch, aber nicht Zeilen, sondern Spalten, damit die Fische auch leichter zu finden sind und das Ergebnis auch am Schluss steht (wird sonst aufwendiger bei unbekannter Fischanzahl). Da sich Excel diese Einstellung merkt, solltest du hinterher nochwas nach Zeilen sortieren (Orientation = 2), weil das die übliche Einstellung ist, von der man normalerweise ausgeht.
Und hier nochmal eine andere Methode für menschen, die mit VBA nur Grundkenntnisse haben:
1. kopiere dir folgenden Code in ein allgemeines Modul:

Function FischListe(Zellen As Range, Pos As Long) As String
Dim T
Dim txt As String
txt = "|"
For Each T In Zellen.Value
If T  "" Then If InStr(txt, "|" & T & "|") = 0 Then txt = txt & T & "|"
Next
T = Split(txt, "|")
If Pos 
2. in die Zelle K1 (überschrift) kommt diese Formel, die du nach rechts ziehst bis keine Fische mehr angezeigt werden

=fischliste($F$2:$H$6;SPALTE(A1))
3. in die Zelle K2 kommt diese Formel, die du nach rechts und nach unten ziehst:

=WENN(ZÄHLENWENN($F2:$H2;J$1);J$1;"")
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige