Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verschachteln- Filtern- Eintragen!

Verschachteln- Filtern- Eintragen!
22.10.2007 17:41:00
Oliver
Hallo Leute!
Ich habe hier ein vielleicht interessantes Problem:
In meiner Liste sind folgende Werte eingetragen:
HAC 10 AA 100 Hersteller1 Typ1 Bezeichnung1
HAC 10 AA 101 Hersteller2 Typ2 Bezeichnung2
HAH 10 AA 100 Hersteller1 Typ1 Bezeichnung1
HAH 10 CT 100 Hersteller1 Typ3 Bezeichnung3
Die Liste enthält ca. 4500 Zeilen,
Die Zahl in der 1. Spalte (HAC usw.) ist eine Codenummer, die nur 1x
in der Liste vorkommen darf. Typ, Hersteller und Bezeichnung können aber immer wieder vorkommen
und sollen daher Querverweise erhalten.
Wenn ein und derselbe Typ und Hersteller zum ersten Mal in der Liste vor kommt, soll in Spalte D dieselbe Nummer wie in A als Querverweis eingetragen werden.
Wenn Typ und Hersteller 2x oder öfter vorkommen, soll in Spalte D die Nummer eingetragen werden,
wo der selbe Typ und Hersteller zum Ersten Mal vorkommt (Kleinste Codenummer):
HAC 10 AA 100 Hersteller1 Typ1 Bezeichnung1 HAC 10 AA 100
HAH 10 AA 100 Hersteller1 Typ1 Bezeichnung1 HAC 10 AA 100
Hilfe!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beispieldatei
22.10.2007 23:41:59
Daniel
Hi
kannst du mal ne Beispieldatei hochladen? (es müssen ja nicht 4500 Zeilen sein)
Gruß, Daniel

AW: Beispieldatei
23.10.2007 09:16:39
Harry
Hallo Oli,
die Formel ist

=INDIREKT("A"&KGRÖSSTE((($B$2:$B$14)=B2)*(($C$2:$C$14)=C2)*(($D$2:$D$14)=D2)*ZEILE($D$2:$D$14);
SUMMENPRODUKT((($B$2:$B$14)=B2)*(($C$2:$C$14)=C2)*(($D$2:$D$14)=D2))))


als Matrixformel eingeben, heißt Eingabe mit Shift-Strg-Enter abschließen
Die Bereiche $B$2:$B$14, $C$2:$C$14, $D$2:$D$14 sind an die Länge deiner Liste anzupassen.
Gruß
Harry

Anzeige
AW: Beispieldatei
23.10.2007 18:15:00
Oliver
Das ist gut!
Geht das auch per Makro?
Das Problem ist, es können jederzeit zwischendrin Zeilen dazu kommen. Und irgendwann
geht bei 4500 Datensätzen oder mehr dann auch alles in die Knie. Die Liste ist auch nur ein Auszug aus
dem Wesentlichen, worauf sich die Funktion beziehen soll.
Die Auswertung darf sich auch auf keinen Fall auf die Spalte B beziehen, weil da auch immer was anderes drin stehen kann.
Hilfe!!!

AW: Beispieldatei
23.10.2007 19:05:29
Harry
Hallo Oli,
ja das geht, siehe https://www.herber.de/bbs/user/47033.xls
Es werden in die Spalte jedoch keine Formeln, sondern nur die gültigen Verweise eingetragen
Gruß
Harry

Anzeige
AW: Beispieldatei
24.10.2007 09:02:00
Oliver
Harry!
Das ist Perfekt!
Viele Grüße
Oli.

AW: Beispieldatei
23.10.2007 21:18:00
Daniel
HI
mal ne Frage:
kann die Datei auch nach Spalte A sortiert werden?
dann könnt man nämlich auch eine etwas einfachere Formel verwenden:
=SVERWEIS(LINKS(A2;9)&"*";$A$2:$A$14;1;0)
sollte die berechung etwas länger dauern, kann man sich damit behelfen, daß man die Formel 1x rechnen lässt und dann mit KOPIEREN und BEARBEITEN - INHALTE EINFÜGEN - WERTE die Formeln wieder durch Werte ersetzt, dann kann man auch zurücksortieren.
bei neuen Daten muss man halt die Formel nochmal eingeben, aber das geht ja fix.
Gruß, Daniel

Anzeige
AW: Beispieldatei
24.10.2007 09:24:43
Oliver
Die Lösung aller Probleme!
Kuckt Euch das mal an!
Vielen Dank an Harry, den Profi!

Sub Querverweis()
Dim arrDatenbestand
Dim arrVerweise
Dim lngLauf1, lngLauf2 As Long
'hier mit Array, da das Auslesen der Zellwerte bei großer Anzahl von Werte zu langsam
' Ausdruck "Tabelle1" und "A2:D" an tatsächliche Position der Werte anpassen
arrDatenbestand = Sheets("Tabelle1").Range("A2:D" & Sheets("Tabelle1").Range("D65536").End(xlUp) _
.Row)
'Anpassen des Verweise-Array'
ReDim arrVerweise(1 To UBound(arrDatenbestand, 1))
For lngLauf1 = 1 To UBound(arrDatenbestand, 1)
' Wenn leer, dann Verweisarray füllen...
If arrVerweise(lngLauf1) = "" Then
arrVerweise(lngLauf1) = arrDatenbestand(lngLauf1, 1)
' ...und gleich für alle weiteren Auftreten der THersteller-Typ-Kombination mit
For lngLauf2 = lngLauf1 + 1 To UBound(arrDatenbestand, 1)
If (arrDatenbestand(lngLauf2, 3) = arrDatenbestand(lngLauf1, 3)) And ( _
arrDatenbestand(lngLauf2, 4) = arrDatenbestand(lngLauf1, 4)) Then
arrVerweise(lngLauf2) = arrDatenbestand(lngLauf1, 1)
End If
Next
End If
Next
' Ausdruck "Tabelle1" und "A2:D" an tatsächliche Position der Werte anpassen
' Ausdruck "+1" entspricht Ausgabe ab Zeile 2
For lngLauf1 = 1 To UBound(arrDatenbestand, 1)
Sheets("Tabelle1").Range("G" & lngLauf1 + 1) = arrVerweise(lngLauf1)
Next
End Sub


Anzeige
AW: Beispieldatei
24.10.2007 13:15:00
Harry
Passt scho, mei jung
Die Lösung aller Probleme!
Keine Angst, das nächste ungelöste Problem wartet garantiert schon auf dich ;-)
Gruß
Harry

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige