Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Doppelte auflisten und sortieren

Doppelte auflisten und sortieren
22.11.2006 15:41:29
HermannZ
Hi;
In der Beispieltabelle habe ich ein Makro das soll aus einem Tabellebereich
die doppelten in der ersten freien spalte neben dem Bereich ohne doppelte und aufsteigend sotiert auflisten.
einen Teil habe ich hinbekommen aber jetzt klemmts;
https://www.herber.de/bbs/user/38412.xls
für jeden Tipp Dankbar.
gruss HermannZ

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte auflisten und sortieren
22.11.2006 22:12:01
fcs
Hallo Hermann,
ich hab dir mal zwei Anweisungen zum ermitteln der nächsten freien Spalte eingebaut und die Zeilen entsprechend angepasst. Die UsedRange-Variante funktioniert immer, die Zeile mit "xlToLeft" sucht immer die letzte ausgefüllte Zelle in der obersten Zeile des ausgewählten Bereichs, funktioniert also nur korrekt, wenn in dieser Zeile immer alle Spalten Inhalte enthalten.
Am Ende des Codes hab ich die Sortierung eingefügt.
Gruss
Franz
Option Explicit Sub OhneDuplikate1() Dim zl As Long, sp As Long, bereich As Range Dim fsp As Long, lsp As Long, startv As Long, startfix As Long, lzl As Long Dim spErgebnis As Integer Dim intText As Integer Set bereich = Application.InputBox("Bitte einen Bereich markieren", , , , , , , 8) lzl = bereich.Rows.Count + bereich.Row - 1 fsp = bereich.Column lsp = bereich.Columns.Count + bereich.Column - 1 startfix = bereich.Row startv = bereich.Row 'Nächste freie Spalte bestimmen spErgebnis = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count 'spErgebnis = ActiveSheet.Cells(startfix, ActiveSheet.Columns.Count).End(xlToLeft).Column + 1 For sp = fsp To lsp For zl = bereich.Row To lzl If Cells(zl, sp) <> "" Then If WorksheetFunction.CountIf(Range(Cells(startfix, spErgebnis), Cells(startv, spErgebnis)), _ Cells(zl, sp)) = 0 Then Cells(startv, spErgebnis) = Cells(zl, sp) startv = startv + 1 End If End If Next Next 'Sortieren Ergebnis Range(Cells(startfix, spErgebnis), Cells(startv - 1, spErgebnis)).Sort key1:=Cells(startfix, spErgebnis), _ Order1:=xlAscending, Header:=xlNo End Sub
Anzeige
AW: Doppelte auflisten und sortieren
23.11.2006 10:48:32
HermannZ
Hallo fcs;
Danke für die Antwort, ich habe in der Zwischenzeit das Makro etwas geändert, und zwar um die ergebnisspalte frei bestimmen zu können.Soweit so gut.Mit dem sortieren hapert es noch.ich habe versucht deine lösung des sortierens in das makro einzubauen versucht,wie nicht anders zu erwarten geht das nicht wie ich will, die sortierung ist zwar richtig, aber er haut mir das Beispiel durcheinander und sortiert das mit,was ja nicht sein soll,und das verstehe ich nun überhaupt nicht.
kannst du dir das noch mal ansehen.
das Makro;
Sub OhneDuplikate1() Dim zl As Long, sp As Long, azl As Long, bereich As Range, bereich1 As Range Dim fsp As Long, lsp As Long, asp As Long, lzl As Long Dim intText As Integer Set bereich = Application.InputBox("Bitte einen Bereich markieren", , , , , , , 8) Set bereich1 = Application.InputBox("Bitte erste Zelle des Ausgabebereichs markieren", , , , , , , 8) lzl = bereich.Rows.Count + bereich.Row - 1 fsp = bereich.Column lsp = bereich.Columns.Count + bereich.Column - 1 asp = bereich1.Column azl = bereich1.Row For sp = fsp To lsp For zl = bereich.Row To lzl If Cells(zl, sp) <> "" Then If WorksheetFunction.CountIf(bereich, Cells(zl, sp)) > 1 Then If WorksheetFunction.CountIf(Columns(asp), Cells(zl, sp)) = 0 Then Cells(azl, asp) = Cells(zl, sp) azl = azl + 1 End If End If End If Next Next 'Sortieren Ergebnis Range(Cells(azl, asp), Cells(azl, asp)).Sort key1:=Cells(azl, asp), _ Order1:=xlAscending, Header:=xlNo End Sub
und das Ergebniss sieht so aus;
 
 BCDEFG
3      
4719Name29Name132
53 Name34Name113
6113Name23Name174
7614Name67Name146
82023Name1112Name107
9422Name45Name1612
101012Name12Name1213
112 Name16Name1522
12     Name1
13218Name78Name16Name11
14     Name15
15     Name16
161122Name213Name15Name2
17      
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
gruss Hermann
Anzeige
AW: habe Lösung......................mT.
23.11.2006 11:23:44
HermannZ
hallo Franz;
habe eine zufriedenstellende Lösung gefunden,und nochmal Danke für deine Unterstützung dadurch habe ich das jetzt auch etwas mehr begriffen.

Sub OhneDuplikate1()
Dim zl As Long, sp As Long, azl As Long, bereich As Range, bereich1 As Range
Dim fsp As Long, lsp As Long, asp As Long, lzl As Long
Dim intText As Integer
Set bereich = Application.InputBox("Bitte einen Bereich markieren", , , , , , , 8)
Set bereich1 = Application.InputBox("Bitte erste Zelle des Ausgabebereichs markieren", , , , , , , 8)
lzl = bereich.Rows.Count + bereich.Row - 1
fsp = bereich.Column
lsp = bereich.Columns.Count + bereich.Column - 1
asp = bereich1.Column
azl = bereich1.Row
For sp = fsp To lsp
For zl = bereich.Row To lzl
If Cells(zl, sp) <> "" Then
If WorksheetFunction.CountIf(bereich, Cells(zl, sp)) > 1 Then
If WorksheetFunction.CountIf(Columns(asp), Cells(zl, sp)) = 0 Then
Cells(azl, asp) = Cells(zl, sp)
azl = azl + 1
End If
End If
End If
Next
Next
'Sortieren Ergebnis
Range(Cells(bereich1.Row, asp), Cells(65536, asp)).Sort key1:=Cells(azl, asp), _
Order1:=xlAscending, Header:=xlNo
End Sub

Gruss hermann
Anzeige
AW: Doppelte auflisten und sortieren
23.11.2006 11:30:12
fcs
Hallo Hermann,
du hast für den zu sortierenden Bereich die Zellen nicht korrekt festgelegt.
Variable azl ist immer die Zeile in der der nächste gefundene Wert eingetragen werden soll. Das heißt, bei dir hat das Makro immer eine Zelle zum Sortieren bekommen, keine Ahnung wie Excel das dann umsetzt.
Anpassung:

'Sortieren Ergebnis
Range(Cells(bereich1.Row, asp), Cells(azl - 1, asp)).Sort key1:=Cells(bereich1.Row, asp), _
Order1:=xlAscending, Header:=xlNo

So sollte es eigentlich funktionieren.
Gruß
Franz
AW: Doppelte auflisten und sortieren
23.11.2006 16:57:06
HermannZ
Hallo Franz;
Danke für den tipp wieder was gelernt.
Gruss Hermann
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige