PDA

Vollständige Version anzeigen : VLookUp mit drei Suchkriterien


Esko
25.06.2015, 19:03
Hallo,

ich habe eine Tabelle mit vier Spalten in der ich eine Datenbank für Fenster angelegt habe.

1. Spalte: Art
2. Spalte: Höhe
3. Spalte: Breite
4. Spalte: Preis

Ich möchte jetzt in einer Userform die Art des Fensters, die Höhe und die Breite eingeben und mir dann, wenn ich auf einen Button klicke, den Preis anzeigen lassen. Ich bräuchte also eine VLookUp-Funktion mit drei Suchkriterien, aber ist das überhaupt möglich und wenn ja wie? Oder gibt es eine bessere Lösung für mein Problem?

Es soll in einer Userform passieren, weil die Userform, falls alles funktioniert wie gewünscht, noch erweitert werden soll.

P.S.: Es sollte so simpel wie möglich sein, da ich VBA-Anfänger bin.

MfG
Esko

Beverly
25.06.2015, 20:03
Hi,

wie wäre es denn, wenn du die Autofilterfunktion im Tabellenblatt dazu benutzt, sodass am Ende nur die Zeile angezeigt wird, in der der gesuchte Preis steht?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Silvio Michel
26.06.2015, 07:18
Hallo Esko,
Warum soll es eine "VLookUP-Funktion sein ?
Ist es weil der Preis über eine Datentabelle ermittelt wird ?
Es geht vielleicht einfacher
Gruß
Silvio

xlph
26.06.2015, 07:45
Hallo,

ich tendiere zu SummeWennS().

Esko
26.06.2015, 09:05
Hi,

wie wäre es denn, wenn du die Autofilterfunktion im Tabellenblatt dazu benutzt, sodass am Ende nur die Zeile angezeigt wird, in der der gesuchte Preis steht?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>


Danke für den Hinweis! Das Filtern habe ich mit deinem Hinweis hinbekommen. Leider bekomme ich es noch nicht hin, dass mir in der Textbox "FPreis" der Eintrag aus Spalte E also der Preis angezeigt wird.

Private Sub FCheck_Click()

Dim ErsteZelle
Set ErsteZelle = Cells.Find("*", , , , , xlNext)
'Diese Codezeile sorgt dafür, dass ab Beginn der Daten der Autofilter gesetzt wird
If Not Sheets("Fenster").AutoFilterMode Then ErsteZelle.AutoFilter
'Field:=1 bezieht sich auf die ERSTE gefilterte Spalte
'Standardmässig ist Spalte A die erste gefilterte Spalte
'Wenn jedoch z.B. nur in C:F Daten stehen, ist field:=1 => Spalte C
ErsteZelle.AutoFilter Field:=1, Criteria1:=FArt '3.Spalte ab Beginn der Daten
ErsteZelle.AutoFilter Field:=2, Criteria1:=FBreite '4.Spalte ab Beginn der Daten
ErsteZelle.AutoFilter Field:=3, Criteria1:=FHoehe '4.Spalte ab Beginn der Daten
Set ErsteZelle = Nothing


ErsteZelle = Sheets("Fenster").Range("e65536").End(xlUp).Offset(1, 0).Row



FPreis.Value = ErsteZelle
End Sub

@ Silvio Michel: es muss keine VLookUp-Funktion sein, aber VBA, da die Userfrom eventuell noch erweitert werden soll.

@xlph: Danke für den Hinweis, aber ich werde wohl beim Filtern bleiben.

Beverly
26.06.2015, 12:36
Hi,

da es immer nur 1 Treffer gibt, kannst du dazu einfach die Zeile des gefilterten Eintrags ermitteln:

ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeLastCell).Row


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Esko
29.06.2015, 08:57
Hi,

da es immer nur 1 Treffer gibt, kannst du dazu einfach die Zeile des gefilterten Eintrags ermitteln:

ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeLastCell).Row


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Der Code zeigt mir leider nur die Zeilennummer an und nicht den letzten Eintrag in der Zeile.

RPP63neu
29.06.2015, 09:18
Hi!
Ganz kurz: Cells(Zeile, Spalte).Value
Wie Du die Zeile ermittelst, hat Dir Karin ja gezeigt.
EDIT:
Bitte zitiere nicht die Beiträge, auf die Du antwortest.
Wir sehen auch so, was darüber steht.

Gruß Ralf

Beverly
29.06.2015, 10:04
Schreibe das Ergebnis auf eine Variable, dann kannst du wie folgt den Zellinhalt ermitteln:

Cells(Variable, 6)

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Esko
29.06.2015, 14:28
Ein großes Dankeschön an euch alle und besonders Beverly!

Jetzt klappt alles.