Index-Vergleich mit 3-4 Kriterien
#1
Hallo,

ich habe folgende Tabelle gegeben:
   

Nun möchte ich rechts entsprechend der Vorgaben den nächstgrößeren Querschnitt auslesen.

Das ganze funktioniert relativ umständlich über folgendes Schema:
Code:
=WENNS(
UND(Y3="Kupfer";Y4="A1";Y5=2);INDEX(C5:C20;VERGLEICH(Y6;D5:D20;-1));
UND(Y3="Kupfer";Y4="A1";Y5=3);INDEX(C5:C20;VERGLEICH(Y6;E5:E20;-1));
UND(Y3="Kupfer";Y4="A2";Y5=2);INDEX(C5:C20;VERGLEICH(Y6;F5:F20;-1));
UND(Y3="Kupfer";Y4="A2";Y5=3);INDEX(C5:C20;VERGLEICH(Y6;G5:G20;-1));
UND(Y3="Kupfer";Y4="B1";Y5=2);INDEX(C5:C20;VERGLEICH(Y6;H5:H20;-1));
UND(Y3="Kupfer";Y4="B1";Y5=3);INDEX(C5:C20;VERGLEICH(Y6;I5:I20;-1));
UND(Y3="Kupfer";Y4="B2";Y5=2);INDEX(C5:C20;VERGLEICH(Y6;J5:J20;-1));
UND(Y3="Kupfer";Y4="B2";Y5=3);INDEX(C5:C20;VERGLEICH(Y6;K5:K20;-1));
...
...
)

Am Ende wären das 36 abfragen per WENNS

Ich vermute das geht deutlich eleganter über einen Array oder eine Zeilen+Spalten-Kombination im Index...damit bekomme ich aber die Abfrage auf den nächsthöheren (Zeile) nicht hin, sodass mir hier irgendwie der sinnhafte Ansatz fehlt.
Scheinbar wird dabei auch zuerst die Zeile durchsucht und dann die Spalte, also müsste die Belastbarkeitstabelle um 90° gedreht aufgebaut werden. 
Ein erster Versuch war folgender:
Code:
=INDEX(C5:C20;
VERGLEICH(Y6;D5:U20;-1);
VERGLEICH(Y4;D3:U3)
)
(das zweite "B2" habe ich dafür entfernt, sodass er erstmal nur eins hätte finden können...er scheitert aber schon bei der Zeile, weil es davon zu viele im angegebenen Bereich gibt ?!)


Am ende vermute ich, dass es noch 2 Schleifen (Kupfer / Aluminium) werden, die Sinn machen könnten, weil's mehr oder minder 2 Tabellen sind.
Das ließe sich ja noch per WENN-Abfrage lösen
=WENN (Y2="Kupfer", [nimm obere Tabelle]; [sonst die untere])

Ist hier jemand fit genug oder hat eine elegante Lösung für dieses Problemchen? 

Viele Grüße


Angehängte Dateien
.xlsx   Beispiel Strombelastbarkeit.xlsx (Größe: 14,58 KB / Downloads: 6)
Antworten Top
#2
Hi,


auf die Schnelle:

Code:
=INDEX(WENN(Y3="Kupfer";$C$5:$C$20;$C$22:$C$31);VERGLEICH(Y6;INDEX(WENN(Y3="Kupfer";$D$5:$U$20;$D$22:$U$31);;VERGLEICH(Y4;D3:U3;0)+(Y5=3));-1))
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
[-] Folgende(r) 1 Nutzer sagt Danke an BoskoBiati für diesen Beitrag:
  • FoodFighter
Antworten Top
#3
Hi,

mach aus deinem Tabellenbuchausschnitt (gut geeignet für einen Menschen) durch entpivotisieren eine Datenliste (gut geeignet für einen Computer) mit den Spalten Material, Verlegeart, bel.Adern, Strom, Querschnitt, dann reicht ein einfacher Autofilter oder (bei aktuellem Excel) =FILTER() bzw. bei älteren Excel die Aggregat-Formel, die ich mir nie merken kann (und auch nicht muss).

Das entpivotisieren sollte mit PQ gehen, notfalls auch händisch.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#4
Hallo F...,

wenn du das Material in jede Zeile schreibst ginge bei deiner absteigenden Sortierung:

=INDEX(C:C;AGGREGAT(14;6;ZEILE(D5:U31)/(D5:U31>=Y6)/(A5:A31=Y3)/(D4:U4=Y5)/(D3:U3=Y4);1))


Angehängte Dateien
.xlsx   Beispiel Strombelastbarkeit.xlsx (Größe: 15,59 KB / Downloads: 4)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • FoodFighter
Antworten Top
#5
Wow, das ging fix.

Vielen Dank!
Sowohl die Lösung von Edgar, als auch die von Helmut funktionieren tadellos, sodass ich das Entpiovisieren gar nicht erst versuchen musste.

Dann werde ich mich mal dran setzen und versuchen zu begreifen, was da genau passiert  19

Besten Dank für die Hilfe.
Markus
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste