Office: Suchabfrage mit zwei Kriterien über mehrere Spalten

Helfe beim Thema Suchabfrage mit zwei Kriterien über mehrere Spalten in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forums-Teilnehmer, ich darf mich kurz vorstellen. Mein Name ist Mister Monk und ich werde mit Excel noch bekloppt :-) Nein, habe ein... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von mister.monk, 5. Dezember 2008.

  1. Suchabfrage mit zwei Kriterien über mehrere Spalten


    Hallo Forums-Teilnehmer, ich darf mich kurz vorstellen. Mein Name ist Mister Monk und ich werde mit Excel noch bekloppt :-)

    Nein, habe ein Problemchen, bei dem mir vielleicht jemand weiterhelfen kann. Ich habe das betreffende Tabellenblatt als Anlage hinterlegt.

    Für dieses Tabellenblatt möchte ich nun auf einem zweiten Tabellenblatt eine Abfrage erstellen. Und zwar sollen dabei:

    1.) der Tag (z.B. 29.03.)
    2.) eine Zahl (mind. verfügbare Betten)

    als Suchabfragekriterien eingegeben werden können. D.h. das hochgeladene Tabellenblatt soll für die jeweilige Eingabe am Tag x nach mindestens y verfügbaren Betten durchsucht werden (das sind die jeweils grün hinterlegten Zellen). Bei Treffer soll die ID des dazugehörigen Objektes (Spalte A) angezeigt werden.

    Ist so was möglich, wenn ja, wie??? Habe schon mit verschiedenen Optionen herum probiert und mir gefühlte 5,8 Mio. Haare ausgerissen :-)

    Für Eure Hilfe wäre ich sehr dankbar!!!

    Wünsche allen ein schönes Wochenende,

    Mister Monk

    Ich hoffe, dass ich mich verständlich ausgedrückt habe...
     
    mister.monk, 5. Dezember 2008
    #1
  2. gook Erfahrener User
    Hallo,
    mit diesem Tabellenaufbau sehe ich schwarz. Mit einem anderen Tabellenaufbau und einem Makro müsste man das schon hinkriegen.
    Kannst du deinen Tabellenaufbau in etwa so umbauen?
     
  3. Exl121150 Erfahrener User
    Hallo mister.monk,
    um die kniffelige Suche in den Zeilen für die Objekte zu ermöglichen, habe ich eine kleine VBA-Funktion gebastelt, wie folgt:
    Code:
    Option Explicit
    
    Function GenugFrei(Anz&, Rg As Range) As Long
      Dim Zl As Long
      For Zl = 1 To Rg.Rows.Count
        If Rg.Cells(Zl, 1) >= Anz& Then GenugFrei = Zl: Exit Function
      Next Zl
      GenugFrei = -1
    End Function
    
    1) Obigen Code mit der Maus selektieren, Tasten Strg+C drücken, nach EXCEL wechseln, dort die Tasten Alt+F11 (VBA-Code-Editor) drücken, im Menü 'Einfügen - Modul' klicken; anschließend in den Code-Editier-Bereich klicken und die Tasten Strg+V drücken, um den kopierten Code dort einzufügen.
    2) Zurückwechseln ins EXCEL-Arbeitsblatt 'Tabelle1', wo die Objektverwaltung enthalten ist.
    3) In diesem zB. Zelle B25 für den gewünschten Tag vorsehen, dort zB. 28.03.2008 eingeben;
    Zelle B26 für die Anzahl benötigter Betten vorsehen, dort zB. 6 eingeben
    4) In Zelle B27 folgende Formel eingeben: '=VERGLEICH(" Zimmer/Betten "&TEXT(B25;"TT.MM.JJJJ");$D$1:$IS$1;0)+3'
    Diese Formel ermittelt die Nummer der 1.Spalte für einen bestimmten Tag (für den 28.3.2008 ist das Spalte 29)
    5) In Zelle B28 folgende Formel eingeben: '=GenugFrei(B26;BEREICH.VERSCHIEBEN(A1;3;B27+1;12;1))'
    Diesel Formel durchsucht den grünen Zellbereich für den fraglichen Tag und gibt die Zeilennummer desjenigen Objektes zurück, für das, beginnend bei Zeile 4, als erstes genügend freie Betten gefunden wurden.
    6) In Zelle A29 folgende Formel eingeben: '=INDEX(A4:A15;B28)' um die Objekt-ID des gefunden Objektes anzuzeigen
    7) In Zelle B29 folgende Formel eingeben: '=INDEX(B4:B15;B28)' um den Objekt-Namen des gefundenen Objektes anzuzeigen.
    8) Waren irgendwelche Suchmanöver nicht erfolgreich, steht in Zelle A29 bzw. B29 ein Fehlerwert.

    Einige Anmerkungen zum Schluss: da EXCEL2003 maximal 255 Spalten darstellen kann, können auf diese Art maximal 10 Tage untergebracht werden; eine vertikale Anordnung der Tage wäre daher vermutlich dieser horizontalen vorzuziehen.
    Ein weiteres unsicheres Element für die Suche ist der Umstand, dass die einzelnen Tagesdatums-Angaben eine möglicherweise unsichere Formatierung aufweisen (1 Leerzeichen zu Beginn, Tage und Monate mit 2 Ziffern, Jahre 4-stellig); eine kleine Abweichung bewirkt, dass dieser Tag von der Suchformel in Zelle B27 nicht gefunden wird.

    Gruß Exl121150
     
    Exl121150, 6. Dezember 2008
    #3
  4. Suchabfrage mit zwei Kriterien über mehrere Spalten

    Daaaaaaaaanke!!!!!!!!!

    Für mich seid ihr Götter - vielen vielen Dank, damit habt ihr mir wirklich unglaublich weiter geholfen. Vor allem die VBA-Lösung funktioniert ausgezeichnet!

    Dass eine andrere Formatierung der Tabelle evtl. mehr Sinn machen würde ist mir auch klar. Nur ist das in dem von mir zu betreuenden Projekt so eine Sache, da mir die Tabelle von anderer Stelle in dieser Formatierung vorgegeben wird. Die 256 Spalten reichen exakt dafür aus, von dem her ist es ok.

    Nochmals vielen Dank und einen schönen 2. Advent weiterhin.

    PS. Kennt ihr eine gute Seite, auf der man so eine Art "VBA-Crash- oder Einführungskurs" aufrufen kann??? Gibt es sowas???

    Mister Monk
     
    mister.monk, 7. Dezember 2008
    #4
  5. wie jetzt aber mehrere Treffer anzeigen lassen?

    Ich nochmal... :-)

    Letzte Frage diesbezüglich, versprochen :-) Die Sache mit Deinem Makro funktioniert prima. Nur wirft mir diese Möglichkeit nur einen Treffer aus. Wenn ich nun mehrere Hotel-IDs untereinander angezeigt bekommen möchte, die die Suchkriterien erfüllen, was muss ich dazu am Makro, bzw. an den Formeln verändern??

    Vielen Dank schon mal!!!

    Mister Monk
     
    mister.monk, 8. Dezember 2008
    #5
  6. Exl121150 Erfahrener User
    Hallo mister.monk,

    um mehrfache Suchresultate zu erhalten, muss der VBA-Code folgendermaßen ausschauen:
    Code:
    Option Explicit
    
    Function GenugFrei(Anz&, Rg As Range) As Variant()
      Dim Zl As Long, Treffer() As Variant, I As Long
      On Error GoTo Err_GenugFrei
      ReDim Treffer(1 To 20)
      I& = 0
      For Zl = 1 To Rg.Rows.Count
        If Rg.Cells(Zl, 1) >= Anz& Then
          I& = I& + 1
          Treffer(I&) = Zl
        End If
      Next Zl
      Treffer(I& + 1) = Error(9)
      ReDim Preserve Treffer(1 To I& + 1)
      GenugFrei = WorksheetFunction.Transpose(Treffer)
      Exit Function
    Err_GenugFrei:
      ReDim Preserve Treffer(1 To I& + 10)
      Resume
    End Function
    
    1) Obigen Code mit der Maus selektieren, Tasten Strg+C drücken, nach EXCEL wechseln, dort die Tasten Alt+F11 (VBA-Code-Editor) drücken, im Menü 'Einfügen - Modul' klicken; anschließend in den Code-Editier-Bereich klicken und die Tasten Strg+V drücken, um den kopierten Code dort einzufügen.
    2) Zurückwechseln ins EXCEL-Arbeitsblatt 'Tabelle1', wo die Objektverwaltung enthalten ist.
    3) In diesem zB. Zelle B25 für den gewünschten Tag vorsehen, dort zB. 28.03.2008 eingeben;
    Zelle B26 für die Anzahl benötigter Betten vorsehen, dort zB. 6 eingeben
    4) In Zelle B27 folgende Formel eingeben: '=VERGLEICH(" Zimmer/Betten "&TEXT(B25;"TT.MM.JJJJ");$D$1:$IS$1;0)+3'
    Diese Formel ermittelt die Nummer der 1.Spalte für einen bestimmten Tag (für den 28.3.2008 ist das Spalte 29)
    5) In Zelle C28 folgende Formel eingeben: '=GenugFrei(B26;BEREICH.VERSCHIEBEN(A1;3;B27+1;12;1))'
    Im Gegensatz zur 1. Lösung muss diese Formel als Array-Formel eingegeben werden. Da es 12 mögliche Objekte gibt, die gefunden werden können, bitte den Zellbereich C28:C39 markieren; daraufhin muss in der Eingabezeile die gerade eingegebene Formel zu sehen sein; in diese Eingabezeile mit der linken Maustaste klicken, sodass dort irgendwo der Eingabe-Cursor zu sehen ist; daraufhin die Tasten Strg+Umschalt+Eingabe drücken. Nach erfolgreicher Betätigung dieser Tasten müsste die Formel eingeschlossen von geschweiften Klammern zu sehen sein.
    Diesel Formel durchsucht den grünen Zellbereich für den fraglichen Tag und gibt die Zeilennummern derjenigen Objekte zurück, für die, beginnend bei Zeile 4, genügend freie Betten gefunden wurden.
    6) In Zelle A28 folgende Formel eingeben: '=INDEX(A$4:A$15;$C28)' um die Objekt-ID des 1. gefunden Objektes anzuzeigen
    7) Diese Formel in die Zelle B28 kopieren, um den Objekt-Namen des 1. gefundenen Objektes anzuzeigen.
    8) Die Formeln im Bereich A28:B28 in den Bereich A29:B39 kopieren, um die Objekt-IDs und die Objektnamen der weiteren 11 möglichen Objekte anzuzeigen.
    9) Waren irgendwelche Suchmanöver nicht erfolgreich, stehen in den Zellen A28:C39 Fehlerwerte.

    Gruß Exl121150
     
    Exl121150, 8. Dezember 2008
    #6
  7. Exl121150 Erfahrener User
    Hallo mister.monk,

    es gibt auch eine Lösung ohne VBA-Code, nur mit Excel-Arbeitsblattfunktionen:
    1) Zellen B25:B27 wie bereits oben anlegen:
    Zelle B25: gewünscheter Tag (zB. 28.03.2008)
    Zelle B26: Anzahl benötigter Betten (zB. 6)
    Zelle B27: Formel: '=VERGLEICH(" Zimmer/Betten "&TEXT(B25;"TT.MM.JJJJ");$D$1:$IS$1;0)+3'
    2) In Zelle C28 folgende Formel zuerst in die Zelleditor-Zeile eingeben:
    '=KKLEINSTE(WENN(BEREICH.VERSCHIEBEN($A$1;3;$B$27+1;12;1)>=$B$26;ZEILE($1:$12));ZEILE($A1))' und anschließend die Tasten Strg+Umschalt+Eingabe drücken, sodass in der Zelle eine in geschweiften Klammern eingeschlossene Formel zu stehen kommt.
    3) In Zelle B28 folgende Formel eingeben: '=INDEX(B$4:B$15;$C28)'
    4) Die Zelle B28 in die Zelle A28 kopieren
    5) Den Zellbereich A28:C28 in den Zellbereich A29:C39 kopieren.
    Das müsste das gleiche Ergebnis erzielen wie meine vorherige Lösung.
     
    Exl121150, 13. Dezember 2008
    #7
Thema:

Suchabfrage mit zwei Kriterien über mehrere Spalten

Die Seite wird geladen...
  1. Suchabfrage mit zwei Kriterien über mehrere Spalten - Similar Threads - Suchabfrage Kriterien Spalten

  2. Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit)

    in Microsoft Excel Hilfe
    Zeit Berechnung mit mehreren kriterien (Datum/Uhrzeit): Hallo zusammen, leider weiss ich nicht wie ich die Start- und Endzeit von "Datum und Uhrzeit" mit mehreren kriterienin über Summewenns einbauen kann. Hab hier im Forum nach einer Lösung geschaut...
  3. Zeilen bei bestimmten Kriterien löschen

    in Microsoft Excel Hilfe
    Zeilen bei bestimmten Kriterien löschen: Moin, ich muss ab heute jeden Monat eine Auswertung über Projekte erstellen, dabei teile ich mir diese Aufgabe mit einem Kollegen, wo er die gerade und ich die ungerade übernehme. Besteht die...
  4. SUMMEWENN mit verschiedenen Kriterien

    in Microsoft Excel Hilfe
    SUMMEWENN mit verschiedenen Kriterien: Hallo, ein neuer Versuch. In der folgenden Tabelle habe Daten die mit SUMMEWENN verschieden WGR – Warengruppen zusammenzähle. Die Hardware WGR wird immer gezählt, die Spalte Zubehör nur wenn...
  5. Excel lädt die Daten nicht sobald Abfragekriterium für ein Textfeld erstellt wird

    in Microsoft Access Hilfe
    Excel lädt die Daten nicht sobald Abfragekriterium für ein Textfeld erstellt wird: Hey Ihr Lieben, ich habe eine Abfrage erstellt und das Kriterium - Wie "*gelb*" - angegeben. Sprich: Mir werden alle Datensätze angezeigt die irgendwo das Wort "gelb" in sich haben. Nun...
  6. Daten aus Tabelle auf anderem Arbeitsblatt und Suchabfrage

    in Microsoft Excel Hilfe
    Daten aus Tabelle auf anderem Arbeitsblatt und Suchabfrage: Hallo zusammen, ich bräuchte mal wieder euer Expertenwissen :-) Ich habe folgende Tabelle die ständig erweitert. Aktuell 480 Zeilen. Tabelle 1: A | B | C | D 1 2 3 Diese ist als Tabelle...
  7. Suchabfrage mit 2 Suchkriterien / Frachtratenzuordnung

    in Microsoft Excel Hilfe
    Suchabfrage mit 2 Suchkriterien / Frachtratenzuordnung: Hallo Liebes Forum, Ich stehe vor der Herausforderung eine Suchabfrage zu erstellen, in der ich 2 Suchkriterien habe (hier; Bestimmung, und Pallettenanzahl) und die Ausgabe der Frachtrate...
  8. So erstellen Sie eine Suchabfrage

    in Microsoft Outlook Tutorials
    So erstellen Sie eine Suchabfrage: So erstellen Sie eine Suchabfrage Outlook für Microsoft 365 Outlook für Microsoft 365 für Mac Outlook 2016 Office Business Outlook 2013 Microsoft 365...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden