Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Liste mit mehrfachen Werten in eine Unikat-Liste kopieren

106 views
Skip to first unread message

Andreas Volkert

unread,
Aug 29, 2004, 10:12:02 AM8/29/04
to
Hallo liebe Newsgroup-Freunde,

darf ich Euch wieder mal um Rat bitten? Vielen Dank schon mal im voraus!

In einer Liste habe ich - mehrfach auftretend in einer Spalte - verschiedene
Werte.

Für eine Auswertung sollten die Werte jetzt in eine andere Tabelle (sheet)
kopiert werden. Jeder Wert aus der Ursprungsliste darf aber am Ziel nur
einmal vorkommen.
Also so:

Ausgangstabelle Zieltabelle

a a
b b
d d
f e
a f
f
b
e

Es wäre super, wenn mir jemand eine Lösung (und evtl. Code) zur Verfügung
stellen kann.

Vielen Dank im Voraus für jede erdenkliche Hilfe.

Andi Volkert


Peter Wolber

unread,
Aug 29, 2004, 10:57:42 AM8/29/04
to
Am 29.08.2004 schrieb Andreas Volkert:

> Also so:
>
> Ausgangstabelle Zieltabelle
>
> a a
> b b
> d d
> f e
> a f
> f
> b
> e
>

> Es waere super, wenn mir jemand eine Loesung (und evtl. Code) zur Verfuegung
> stellen kann.

Mit Code kann ich nicht dienen. Aber schau dir mal die Daten -> Filter
-> Spezialfilter an (Haken setzen bei "Keine Duplikate").

HTH
Gruss
Peter

--
Was soll bloß eine Signatur?
Na gut, nehmen wir sie zum Test:
ae=ä, oe=ö, ue=ü, Ae=Ä, Oe=Ö, Ue=Ü, sz=ß!
Was noch ??

Andreas Volkert

unread,
Aug 29, 2004, 11:48:23 AM8/29/04
to
Peter,

danke, das war gut gemeint, aber in meiner Anwendung kann ich das so leider
nicht gebrauchen. Ich muss die Daten auf ein anderes Blatt bringen, weil
dort in einer separaten Auswertetabelle weitere Berechnungen durchgeführt
werden.

Mit Deinem Vorschlag kann ich die Unikatfilterung leider nur im gleichen
Blatt vornehmen, müsste dann danach die Ergebnismatrix an meine Zielstelle
in einem anderen Sheet verschieben.

Hmmm....
wär vielleicht sogar möglich, vielleicht sollte ich es einfach mal
probieren.

Danke für Deinen Vorschlag.

Andi Volkert

"Peter Wolber" <papie...@feluma.de> schrieb im Newsbeitrag
news:cgt1u7...@ID-30243.user.uni-berlin.de...

Frank Kabel

unread,
Aug 29, 2004, 11:47:52 AM8/29/04
to
Hi
mit dem Spezialfilter kannst Du die Daten auch direkt auf ein anderes
Blatt kopieren. Einziger Trick dabei: Rufe diesen Dialog von dem
Zieltabellenbaltt auf

--
Regards
Frank Kabel
Frankfurt, Germany

Andreas Volkert

unread,
Aug 29, 2004, 12:52:54 PM8/29/04
to
Hallo Frank, Hallo Peter,

ja, genau!, das ist es!

Super Frank, danke! Peter auch dir noch mal ganz herzlichen Dank, dass Du /
Ihr mich auf die richtige Spur gebracht hast / habt.

Ich werd's gleich testen und es als Code in meine Anwendung einarbeiten.

Merci nochmal!

Viele Grüße aus München

Andi Volkert


"Frank Kabel" <frank...@freenet.de> schrieb im Newsbeitrag
news:ea7fN%23djEH...@tk2msftngp13.phx.gbl...

Peter Wolber

unread,
Aug 29, 2004, 12:53:48 PM8/29/04
to
Am 29.08.2004 schrieb Andreas Volkert:

> Hallo Frank, Hallo Peter,
>
> ja, genau!, das ist es!

Freut mich wenn ich helfen konnte. Und Danke fuer die Rueckmeldung.

Gruss
Peter

--
"Schon die Mathematik lehrt uns, das man Nullen nicht uebersehen darf." (Gabriel Laub)

Andreas Volkert

unread,
Aug 29, 2004, 2:03:37 PM8/29/04
to
Hallo Ihr beiden,

habt Ihr noch eine Idee für mich...??

In der Quell-Liste gibt es einige leere Zellen.
Gibt es über den Spezialfilter eine Möglichkeit, die leeren Zellen
unberücksichtigt zu lassen. Ich habe schon versucht, im Kriterienbereich ein
<>"" einzugeben, allerdings ohne Erfolg. Die Funktion scheint eine
Zellangabe zu benötigen. Ich möchte aber in meiner Routine keine Zelle
ansprechen, sondern das Kriterium "hardcoded" eingeben.
Also ( __ steht für leer)


Quelle Ergebnis
A A
B B
__ C
A
B
C
__
C

Irgend eine Idee für mich?

Danke im Voraus

Andi Volkert


"Frank Kabel" <frank...@freenet.de> schrieb im Newsbeitrag
news:ea7fN%23djEH...@tk2msftngp13.phx.gbl...

Eberhard Funke

unread,
Aug 29, 2004, 4:20:28 PM8/29/04
to
Hallo Andreas,

"Andreas Volkert" <andreas...@web.de> schrieb:

>Hallo Ihr beiden,
>
>habt Ihr noch eine Idee für mich...??
>
>In der Quell-Liste gibt es einige leere Zellen.
>Gibt es über den Spezialfilter eine Möglichkeit, die leeren Zellen
>unberücksichtigt zu lassen. Ich habe schon versucht, im Kriterienbereich ein
><>"" einzugeben, allerdings ohne Erfolg. Die Funktion scheint eine
>Zellangabe zu benötigen. Ich möchte aber in meiner Routine keine Zelle
>ansprechen, sondern das Kriterium "hardcoded" eingeben.
>Also ( __ steht für leer)
>
>
>Quelle Ergebnis
>A A
>B B
>__ C
>A
>B
>C
>__
>C
>
>Irgend eine Idee für mich?
>
>Danke im Voraus
>
>Andi Volkert
>

[.....]
Wie wär's mit Sortieren der Ergebnistabelle?

--
Gruß Eberhard
XL 2000

Andreas Volkert

unread,
Aug 29, 2004, 5:01:07 PM8/29/04
to
Hallo Eberhard,

danke für Deine Anregung, das hab ich auch schon probiert, bin damit aber
nicht klar gekommen- zumindest was den Code angeht. Eigentlich müsste ich in
diesem Fall 2x Sortieren, weil ich bei alphabetischer Reihenfolge die leeren
Datensätze nicht am Anfang (unter der Überschrift) brauchen kann.
Das eigentliche Problem liegt aber (zumindest für mich) in der variablen
Listenlänge der Ergebnisliste und damit kann ich keinen Range für den
Sortierbereich fetslegen. Eine Referenzspalte, an Hand der ich die Länge des
Ranges ermitteln könnte

wie mit
Range(Cells(2, icol1), Cells(Cells(Rows.Count, 8).End(xlUp).Row, icol1))
habe ich nicht.

Kannst Du mir hier bitte noch eine Anregung geben, wie ich das
Sortieren-Problem in den Griff bekomme?
Vielen Dank für Deine Hilfe

Andi Volkert

"Eberhard Funke" <nos...@diabetes.info.de> schrieb im Newsbeitrag
news:cgtdin$tdn$04$1...@news.t-online.com...

Melanie Breden

unread,
Aug 29, 2004, 5:17:58 PM8/29/04
to
Hallo Andreas,

Andreas Volkert schrieb:


> In einer Liste habe ich - mehrfach auftretend in einer Spalte - verschiedene
> Werte.
>
> Für eine Auswertung sollten die Werte jetzt in eine andere Tabelle (sheet)
> kopiert werden. Jeder Wert aus der Ursprungsliste darf aber am Ziel nur
> einmal vorkommen.

habe noch einen anderen Vorschlag.
Folgender Code transportiert die Werte ohne Filter in ein anderes Sheet:

Public Sub UnikatListe()
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Dim rngArea As Range
Dim rngCell As Range
Dim col As New Collection
Dim intCol As Integer

Set wksQuelle = Worksheets("Tabelle1")
Set wksZiel = Worksheets("Tabelle2")
Set rngArea = wksQuelle.Columns("A").SpecialCells _
(xlCellTypeConstants, xlTextValues)

For Each rngCell In rngArea
On Error Resume Next
col.Add rngCell.Value, "MB" & rngCell.Value
On Error GoTo 0
Next rngCell

For intCol = 1 To col.Count
wksZiel.Range("A" & wksZiel.Range("A65536") _
.End(xlUp).Row + 1).Value = col(intCol)
Next intCol
End Sub

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#

Eberhard Funke

unread,
Aug 29, 2004, 8:04:23 PM8/29/04
to
"Andreas Volkert" <andreas...@web.de> schrieb:

>Hallo Eberhard,
>
>danke für Deine Anregung, das hab ich auch schon probiert, bin damit aber
>nicht klar gekommen- zumindest was den Code angeht. Eigentlich müsste ich in
>diesem Fall 2x Sortieren, weil ich bei alphabetischer Reihenfolge die leeren
>Datensätze nicht am Anfang (unter der Überschrift) brauchen kann.
>Das eigentliche Problem liegt aber (zumindest für mich) in der variablen
>Listenlänge der Ergebnisliste und damit kann ich keinen Range für den
>Sortierbereich fetslegen. Eine Referenzspalte, an Hand der ich die Länge des
>Ranges ermitteln könnte
>
>wie mit
>Range(Cells(2, icol1), Cells(Cells(Rows.Count, 8).End(xlUp).Row, icol1))
>habe ich nicht.
>
>Kannst Du mir hier bitte noch eine Anregung geben, wie ich das
>Sortieren-Problem in den Griff bekomme?
>Vielen Dank für Deine Hilfe
>
>Andi Volkert
>

>
>
>"Eberhard Funke" <nos...@diabetes.info.de> schrieb im Newsbeitrag
>news:cgtdin$tdn$04$1...@news.t-online.com...
>> Hallo Andreas,
>>

[.....]
>> Wie wär's mit Sortieren der Ergebnistabelle?
>>
>> --
>> Gruß Eberhard
>> XL 2000
>

Ich war von Frank's Vorschlag ausgegangen (also ohne jeden Code):
händisch von der Zieltabelle aus den Spezialfilter ausführen.
Anschließend *aufsteigend* sortieren. Die eine Leerstelle steht dann
am Ende. (Eigentlich nicht nötig, denn da Du ohne Dubletten kopierst,
hat die Zieltabelle auch nur eine Leerzelle, die Du von Hand löschen
könntest).

Aber jetzt das Ganze als Makro, basierend auf Frank's Vorschlag:

Sub Andreas()
On Error Resume Next
Sheets("Tabelle1").Range("A1:A30").AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range("A1"), _
Unique:=True
ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks). _
EntireRow.Delete
End Sub

Die Originalwerte stehen in meinem Beispiel in Tabelle 1 A1:A30.
Das Makro kopiert ohne Dubletten nach A1 der Zieltabelle und löscht
anschließend in dem Zieltabellenblatt die Zeile mit der Leerzelle in
Spalte A.

Das Makro mußt Du VON DER ZIELTABELLE AUS aufrufen !!!

Andreas Volkert

unread,
Aug 30, 2004, 2:51:18 AM8/30/04
to
Guten Morgen Melanie,

vielen herzlichen Dank für Deinen Vorschlag von gestern abend. Ich hab's
heute morgen sofort ausprobiert und es klappt - eigentlich hab ich's nicht
anders erwartet - auf Anhieb wunderbar.
Was ich allerdings noch nicht hingekriegt habe ist, dass der Beginn der
Ziel-Auswerteliste nicht in der ersten freien Zelle sondern an einer fest
definierten Stelle (bei mir A22) erfolgt.

Könntest Du mir bitte an dieser Stelle noch einen kleinen Tipp geben?

Vielen Dank für Deine stets perfekte Unterstützung!

Viele liebe Grüße aus München

Andi Volkert


Deinen Vor
"Melanie Breden" <Melanie....@SPAMmvps.org> schrieb im Newsbeitrag
news:2pevgbF...@uni-berlin.de...

Andreas Volkert

unread,
Aug 30, 2004, 2:53:13 AM8/30/04
to
Nachtrag:

ach ja, und noch was hätte ich auf dem Herzen...
wie kann die Liste auch gleich noch alphabetisch aufsteigend sortiert
werden?


Vielen Dank im Voraus

Andi

"Andreas Volkert" <andreas...@web.de> schrieb im Newsbeitrag
news:cguia4$c7n$07$1...@news.t-online.com...

Melanie Breden

unread,
Aug 30, 2004, 3:11:01 AM8/30/04
to
Hallo Andreas,

Andreas Volkert schrieb:

> ach ja, und noch was hätte ich auf dem Herzen...


> wie kann die Liste auch gleich noch alphabetisch aufsteigend sortiert
> werden?

vermutlich willst du die Überschriftenzelle auch nicht mitnehmen?
Dann änder nur den letzten Teil der Prozedur:

'....
For intCol = 2 To col.Count
wksZiel.Range("A" & 20 + intCol).Value = col(intCol)
Next intCol

With wksZiel
.Select
.Range("A22").Resize(intCol - 2, 1).Sort _
Key1:=Range("A22"), Order1:=xlAscending, Header:=xlNo
End With

Andreas Volkert

unread,
Aug 30, 2004, 3:28:26 AM8/30/04
to
Melanie!

du bist eine Schau!! (sagt man bei uns in Bayern so).

Vielen Dank! Volltreffer!

Ciao! und danke nochmal!
Andi

"Melanie Breden" <Melanie....@SPAMmvps.org> schrieb im Newsbeitrag

news:2pg28aF...@uni-berlin.de...

Melanie Breden

unread,
Aug 30, 2004, 3:38:46 AM8/30/04
to
Hallo Andreas,

Andreas Volkert schrieb:

> du bist eine Schau!! (sagt man bei uns in Bayern so).

bin zwar aus Hessen, aber nehme auch das bayrische Kompliment dankend an ;-)

> Vielen Dank! Volltreffer!
> Ciao! und danke nochmal!

Bittesehr, ist gern geschehen und Ci@u

0 new messages