Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Auswahl mit zwei Kriterien

Auswahl mit zwei Kriterien
Larissa
Hallo nochmal,
mit meinen 'mäßigen' VBA-Kenntnissen stoße ich wieder mal an Grenzen und bitte um Eure Profiunterstützung.
Aus dem Tabellenblatt "Eingabe" erstelle ich 3 Variablen:
1. KZ = Tabellenblatt
2. Datum = Datum
3. Schicht = "Tag" oder "Nacht"
Die erste Eintragung der Kombination Datum (SpalteB) und die Schicht (SpalteC) soll in dem Tabellenblatt (KZ) gefunden werden.
Mein gescheiterter Versuch sieht so aus:
Dim KZ As String
KZ = Sheets("Eingabe").Range("F4")
Dim Datum As String
Datum = Sheets("Eingabe").Range("E12")
Dim Schicht As String
Schicht = Sheets("Eingabe").Range("F12")
Sheets(KZ).Select
Range("B:B").Find (CDate(Datum)) And Range("C:C").Find(Schicht).Select
Das "And" scheint ihn nicht zu interessieren, es wird nur die erste Eintragung in Spalte C markiert.
Kann mir da bitte einer von Euch unter die Arme greifen :-)
Danke schon mal,
lieben Gruß,
Larissa
AW: Auswahl mit zwei Kriterien
05.09.2009 12:31:23
Original
Hi,
Sub so()
Dim KZ As String
Dim Datum As String
Dim Schicht As String
Dim rng1 As Range
Dim rng2 As Range
Dim Ges As Range
KZ = Sheets("Eingabe").Range("F4")
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
Sheets(KZ).Select
Set rng1 = Range("B:B").Find(CDate(Datum))
Set rng2 = Range("C:C").Find(Schicht)
Set Ges = Union(rng1, rng2)
Ges.Select
End Sub
mfg Kurt
Verteilte Zellen finden und auswählen
05.09.2009 12:35:09
Luc:-?
Hi, Larissa,
das sollte wenn, dann eher so fktn...
Dim KZ As String, Datum As String, Schicht As String
KZ = Sheets("Eingabe").Range("F4")
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
Sheets(KZ).Select
Union(Range("B:B").Find(CDate(Datum)), Range("C:C").Find(Schicht)).Select
...wenn du wirklich 2 Zellen gleichzeitig auswählen willst...
Gruß Luc :-?
Anzeige
AW: Verteilte Zellen finden und auswählen
05.09.2009 13:01:45
Larissa
Hallo Luc und Kurt,
beide Makros von Euch funktionieren super, aber die Auswahl sollte nur getroffen werden, wenn beide Kriterien in einer Zeile erfüllt werden.
Sorry, das hatte ich nicht erwähnt weil mir gar nicht klar war, dass es auch anders gehen könnte.
vG Larissa
Dann brauchst du noch If,...
05.09.2009 13:31:27
Luc:-?
...Larissa;
If Range("B:B").Find(CDate(Datum)).Row = Range("C:C").Find(Schicht).Row Then
...
End If

...oder analog besser mit Kurts Range-Variablen, das ist sauberer...
Außerdem wirst du ggf eine Möglichkeit zum Weitersuchen benötigen, falls beides mehrfach, auch in unterschiedl Zeilen, auftritt...
Gruß Luc :-?
Anzeige
AW: Dann brauchst du noch If,...
05.09.2009 14:01:01
Larissa
Hallo Luc,
Danke für die Hilfe. Weitersuchen muss ich nicht. Ich suche die Zeile mit der ersten Übereinstimmung.
Kannst Du mir bitte noch verraten, wie ich die Zelle in Spalte A aus dieser gefundenen Zeile markiere?
Vielen Dank, Larissa
Das dürfte hier aber so fkt,...
05.09.2009 14:11:25
Luc:-?
...Larissa...
Findet er den 1. oder 2.Teil und der jeweils andere hat nicht dieselbe Zeilennr, passiert nichts! Es müsste dann weitergesucht wdn. Also wäre es wohl am Besten, wenn beide Teile getrennt gesucht würden, jeweils eine Liste mit den Fundstellen angelegt würde und die beiden Listen dann auf übereinstimmende Zeilennr durchsucht wdn würden. Also alles doch etwas komplizierter als du wohl gedacht hast... ;-)
Erst dann kann wie üblich ...Selectiert wdn!
Gruß Luc :-?
Anzeige
AW: Das dürfte hier aber so fkt,...
05.09.2009 14:33:57
Larissa
Ohje, das hört sich nicht gut an. Ich werde mal sehen, ob ich mit einer SUMMENPRODUKT Formel irgendwie weiterkomme...
Vielen Dank erstmal. Gruß, Larissa
Vielleicht mit einer Hilfsspalte
05.09.2009 16:46:56
Larissa
Hallo,
jetzt hatte ich doch noch eine Idee mit einer Hilfsspalte.
Ich habe Datum und Schicht zusammengelegt: E12&F12
In dem Tabellenblatt KZ habe ich eine Hilfsspate eingerichtet und auch Datum und Schicht zusammengelegt.
Die Variable für Datum ist z.B. (40034Nacht)
So soll VBA jetzt danach suchen:
Sub Suchen()
Dim KZ As String, Datum As String
KZ = Sheets("Eingabe").Range("F4")
Datum = Sheets("Eingabe").Range("D12")
Sheets(KZ).Select
Range("H:H").Find(Datum).Select
End Sub
Das klappt aber nur, wenn ich statt der Formel Werte einfüge. Dann wird die Zelle gefunden.
Wie funktioniert das denn bei Formeln? Wird das Datum nicht erkannt, oder woran liegt das?
Viele Grüße,
Larissa
Anzeige
Anderer Vorschlag!
05.09.2009 17:29:47
Backowe
Hallo Larissa,
probiere es mal so:
VBA-Code:
Sub SuchkriterienFinden()
Dim Datum As String
Dim Schicht As String
Dim c As Range
Dim firstAddress As String
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
With Sheets("KZ").Range("B:B")
  Set c = .Find(CDate(Datum), LookIn:=xlValues)
  If Not c Is Nothing Then
    firstAddress = c.Address
    Do
      If c.Offset(0, 1) = Schicht Then
        c.Offset(0, 2).Select
        Exit Do
      End If
      Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
End With
End Sub
Gruß Jürgen
Zelle in Spalte A "selectiert"! ;o)
Backowe

Hallo Larissa,
ich mir nicht alle Antworten durchgelesen! ;o)
Hier noch die kleine Korrektur:
VBA-Code:
Sub SuchkriterienFinden()
Dim Datum As String
Dim Schicht As String
Dim c As Range
Dim firstAddress As String
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
With Sheets("KZ").Range("B:B")
  Set c = .Find(CDate(Datum), LookIn:=xlValues)
  If Not c Is Nothing Then
    firstAddress = c.Address
    Do
      If c.Offset(0, 1) = Schicht Then
        c.Offset(0, -1).Select
        Exit Do
      End If
      Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
End With
End Sub
Gruß Jürgen
AW: Zelle in Spalte A "selectiert"! ;o)
Larissa

Hi Jürgen,
das sieht ja super aus, ich bleibe aber hängen bei:
With Sheets("KZ").Range("B:B")
Ich habe schon die Variable
Dim KZ As String
KZ = Sheets("Eingabe").Range("F4")
hinzugefügt, geht aber trotzdem noch nicht, weißt Du vielleicht warum?
Lieben Gruß,
Larissa
Steht in der Variable KZ ein Sheetname?
Backowe

Hallo Larissa,
wenn dem so ist, dann einfach With Sheets("" & KZ &"").Range("B:B") verwenden.
Gruß Jürgen
AW: Steht in der Variable KZ ein Sheetname?
Larissa

Danke Jürgen,
Ok, also da ist es schon mal weitergegangen, aber jetzt huscht das Makro einfach so durch.
Von
If Not c Is Nothing Then
gleich auf End With
Das Makro ist so spezispeziell für mich, da traue ich mich nicht, etwas zu ändern. Würde wohl auch eh nichts bringen.
Hast Du noch eine Idee für mich?
Gruß, Larissa
Das Sheet muss als als erstes ausgewählt werden
Backowe

Hallo Larissa,
VBA-Code:
Sub SuchkriterienFinden()
Dim KZ As String, Datum As String, Schicht As String, firstAddress As String
Dim c As Range
KZ = Sheets("Eingabe").Range("F4")
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
Sheets("" & KZ & "").Select
With Range("B:B")
  Set c = .Find(CDate(Datum), LookIn:=xlValues)
  If Not c Is Nothing Then
    firstAddress = c.Address
    Do
      If c.Offset(0, 1) = Schicht Then
        c.Offset(0, -1).Select
        Exit Do
      End If
    Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
End With
End Sub
Gruß Jürgen
AW: Das Sheet muss als als erstes ausgewählt werden
Larissa

Hallo Jürgen,
irgendwie noch nicht. Jetzt lade ich mal die Liste hoch, damit Du Dir das mal genauer anschauen kannst.
https://www.herber.de/bbs/user/64231.xls
Danke schonmal :-)
Gruß, Larissa
Wandele das Datum in Spalte B um in ...
Backowe

Hallo Larissa,
... das Format TT.MM.JJJJ um, dann funktioniert es problemlos!
Gruß Jürgen
AW: Wandele das Datum in Spalte B um in ...
Original

Hi,
Sheets(KZ).Select
ist etwas einfacher.
mfg Kurt
KZ ist eine Variable!
Backowe

Hallo Kurt,
ich denke, daß dies nur ein Beispiel ist, das Orginal wesentlich mehr Sheets beinhaltet. Ich hatte ihr dies ein Paar Postings vorher schon geschrieben, aber die Rückmeldung war, daß bei Sheeets("KZ")... sich der Debugger gemeldet hat.
Gruß Jürgen
AW: KZ ist eine Variable!
Larissa

Ja richtig Jürgen, es gibt mehrere KZ-Sheets.
Wo soll ich denn das Datum in Text umwandeln? In dem KZ-Sheet, oder auch im "Eingabe"-Sheet? Meinst Du so: =TEXT(E12;"TT.MM.JJ")
Damit habe ich es noch nicht hinbekommen. Ich hatte vorher auch schon mal mit einer Hilfsspalte versucht und die TEXT-Formel für das Zusammenfügen genommen. Irgendwie bleibt das bei mir alles erfolglos :-(
Gruß, Larissa
Mache Dir doch das Leben nicht unnötig schwer! ;o)
Backowe

Hallo Larissa,
ich meinte das Zellenformat in der Spalte B abändern in "TT.MM.JJJJ" , nicht eine zusätzliche Spalte.
Gruß Jürgen
Juuhuuu! - Danke Jürgen ;-)
Larissa

Das war schon alles? Das ist ja schon echt peinlich.
1000 Dank, Du warst eine tolle Hilfe.
Lieben Gruß, Larissa
Anzeige
Zelle in Spalte A "selectiert"! ;o)
05.09.2009 18:09:49
Backowe
Hallo Larissa,
ich mir nicht alle Antworten durchgelesen! ;o)
Hier noch die kleine Korrektur:
VBA-Code:
Sub SuchkriterienFinden()
Dim Datum As String
Dim Schicht As String
Dim c As Range
Dim firstAddress As String
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
With Sheets("KZ").Range("B:B")
  Set c = .Find(CDate(Datum), LookIn:=xlValues)
  If Not c Is Nothing Then
    firstAddress = c.Address
    Do
      If c.Offset(0, 1) = Schicht Then
        c.Offset(0, -1).Select
        Exit Do
      End If
      Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
End With
End Sub
Gruß Jürgen
AW: Zelle in Spalte A "selectiert"! ;o)
Larissa

Hi Jürgen,
das sieht ja super aus, ich bleibe aber hängen bei:
With Sheets("KZ").Range("B:B")
Ich habe schon die Variable
Dim KZ As String
KZ = Sheets("Eingabe").Range("F4")
hinzugefügt, geht aber trotzdem noch nicht, weißt Du vielleicht warum?
Lieben Gruß,
Larissa
Steht in der Variable KZ ein Sheetname?
Backowe

Hallo Larissa,
wenn dem so ist, dann einfach With Sheets("" & KZ &"").Range("B:B") verwenden.
Gruß Jürgen
AW: Steht in der Variable KZ ein Sheetname?
Larissa

Danke Jürgen,
Ok, also da ist es schon mal weitergegangen, aber jetzt huscht das Makro einfach so durch.
Von
If Not c Is Nothing Then
gleich auf End With
Das Makro ist so spezispeziell für mich, da traue ich mich nicht, etwas zu ändern. Würde wohl auch eh nichts bringen.
Hast Du noch eine Idee für mich?
Gruß, Larissa
Das Sheet muss als als erstes ausgewählt werden
Backowe

Hallo Larissa,
VBA-Code:
Sub SuchkriterienFinden()
Dim KZ As String, Datum As String, Schicht As String, firstAddress As String
Dim c As Range
KZ = Sheets("Eingabe").Range("F4")
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
Sheets("" & KZ & "").Select
With Range("B:B")
  Set c = .Find(CDate(Datum), LookIn:=xlValues)
  If Not c Is Nothing Then
    firstAddress = c.Address
    Do
      If c.Offset(0, 1) = Schicht Then
        c.Offset(0, -1).Select
        Exit Do
      End If
    Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
End With
End Sub
Gruß Jürgen
AW: Das Sheet muss als als erstes ausgewählt werden
Larissa

Hallo Jürgen,
irgendwie noch nicht. Jetzt lade ich mal die Liste hoch, damit Du Dir das mal genauer anschauen kannst.
https://www.herber.de/bbs/user/64231.xls
Danke schonmal :-)
Gruß, Larissa
Wandele das Datum in Spalte B um in ...
Backowe

Hallo Larissa,
... das Format TT.MM.JJJJ um, dann funktioniert es problemlos!
Gruß Jürgen
AW: Wandele das Datum in Spalte B um in ...
Original

Hi,
Sheets(KZ).Select
ist etwas einfacher.
mfg Kurt
KZ ist eine Variable!
Backowe

Hallo Kurt,
ich denke, daß dies nur ein Beispiel ist, das Orginal wesentlich mehr Sheets beinhaltet. Ich hatte ihr dies ein Paar Postings vorher schon geschrieben, aber die Rückmeldung war, daß bei Sheeets("KZ")... sich der Debugger gemeldet hat.
Gruß Jürgen
AW: KZ ist eine Variable!
Larissa

Ja richtig Jürgen, es gibt mehrere KZ-Sheets.
Wo soll ich denn das Datum in Text umwandeln? In dem KZ-Sheet, oder auch im "Eingabe"-Sheet? Meinst Du so: =TEXT(E12;"TT.MM.JJ")
Damit habe ich es noch nicht hinbekommen. Ich hatte vorher auch schon mal mit einer Hilfsspalte versucht und die TEXT-Formel für das Zusammenfügen genommen. Irgendwie bleibt das bei mir alles erfolglos :-(
Gruß, Larissa
Mache Dir doch das Leben nicht unnötig schwer! ;o)
Backowe

Hallo Larissa,
ich meinte das Zellenformat in der Spalte B abändern in "TT.MM.JJJJ" , nicht eine zusätzliche Spalte.
Gruß Jürgen
Juuhuuu! - Danke Jürgen ;-)
Larissa

Das war schon alles? Das ist ja schon echt peinlich.
1000 Dank, Du warst eine tolle Hilfe.
Lieben Gruß, Larissa
Anzeige
AW: Zelle in Spalte A "selectiert"! ;o)
05.09.2009 18:29:24
Larissa
Hi Jürgen,
das sieht ja super aus, ich bleibe aber hängen bei:
With Sheets("KZ").Range("B:B")
Ich habe schon die Variable
Dim KZ As String
KZ = Sheets("Eingabe").Range("F4")
hinzugefügt, geht aber trotzdem noch nicht, weißt Du vielleicht warum?
Lieben Gruß,
Larissa
Steht in der Variable KZ ein Sheetname?
05.09.2009 18:33:38
Backowe
Hallo Larissa,
wenn dem so ist, dann einfach With Sheets("" & KZ &"").Range("B:B") verwenden.
Gruß Jürgen
AW: Steht in der Variable KZ ein Sheetname?
05.09.2009 18:46:07
Larissa
Danke Jürgen,
Ok, also da ist es schon mal weitergegangen, aber jetzt huscht das Makro einfach so durch.
Von
If Not c Is Nothing Then
gleich auf End With
Das Makro ist so spezispeziell für mich, da traue ich mich nicht, etwas zu ändern. Würde wohl auch eh nichts bringen.
Hast Du noch eine Idee für mich?
Gruß, Larissa
Anzeige
Das Sheet muss als als erstes ausgewählt werden
05.09.2009 19:02:20
Backowe
Hallo Larissa,
VBA-Code:
Sub SuchkriterienFinden()
Dim KZ As String, Datum As String, Schicht As String, firstAddress As String
Dim c As Range
KZ = Sheets("Eingabe").Range("F4")
Datum = Sheets("Eingabe").Range("E12")
Schicht = Sheets("Eingabe").Range("F12")
Sheets("" & KZ & "").Select
With Range("B:B")
  Set c = .Find(CDate(Datum), LookIn:=xlValues)
  If Not c Is Nothing Then
    firstAddress = c.Address
    Do
      If c.Offset(0, 1) = Schicht Then
        c.Offset(0, -1).Select
        Exit Do
      End If
    Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
End With
End Sub
Gruß Jürgen
AW: Das Sheet muss als als erstes ausgewählt werden
Larissa

Hallo Jürgen,
irgendwie noch nicht. Jetzt lade ich mal die Liste hoch, damit Du Dir das mal genauer anschauen kannst.
https://www.herber.de/bbs/user/64231.xls
Danke schonmal :-)
Gruß, Larissa
Wandele das Datum in Spalte B um in ...
Backowe

Hallo Larissa,
... das Format TT.MM.JJJJ um, dann funktioniert es problemlos!
Gruß Jürgen
AW: Wandele das Datum in Spalte B um in ...
Original

Hi,
Sheets(KZ).Select
ist etwas einfacher.
mfg Kurt
KZ ist eine Variable!
Backowe

Hallo Kurt,
ich denke, daß dies nur ein Beispiel ist, das Orginal wesentlich mehr Sheets beinhaltet. Ich hatte ihr dies ein Paar Postings vorher schon geschrieben, aber die Rückmeldung war, daß bei Sheeets("KZ")... sich der Debugger gemeldet hat.
Gruß Jürgen
AW: KZ ist eine Variable!
Larissa

Ja richtig Jürgen, es gibt mehrere KZ-Sheets.
Wo soll ich denn das Datum in Text umwandeln? In dem KZ-Sheet, oder auch im "Eingabe"-Sheet? Meinst Du so: =TEXT(E12;"TT.MM.JJ")
Damit habe ich es noch nicht hinbekommen. Ich hatte vorher auch schon mal mit einer Hilfsspalte versucht und die TEXT-Formel für das Zusammenfügen genommen. Irgendwie bleibt das bei mir alles erfolglos :-(
Gruß, Larissa
Mache Dir doch das Leben nicht unnötig schwer! ;o)
Backowe

Hallo Larissa,
ich meinte das Zellenformat in der Spalte B abändern in "TT.MM.JJJJ" , nicht eine zusätzliche Spalte.
Gruß Jürgen
Juuhuuu! - Danke Jürgen ;-)
Larissa

Das war schon alles? Das ist ja schon echt peinlich.
1000 Dank, Du warst eine tolle Hilfe.
Lieben Gruß, Larissa
Anzeige
AW: Das Sheet muss als als erstes ausgewählt werden
05.09.2009 19:52:21
Larissa
Hallo Jürgen,
irgendwie noch nicht. Jetzt lade ich mal die Liste hoch, damit Du Dir das mal genauer anschauen kannst.
https://www.herber.de/bbs/user/64231.xls
Danke schonmal :-)
Gruß, Larissa
Wandele das Datum in Spalte B um in ...
05.09.2009 20:23:47
Backowe
Hallo Larissa,
... das Format TT.MM.JJJJ um, dann funktioniert es problemlos!
Gruß Jürgen
AW: Wandele das Datum in Spalte B um in ...
05.09.2009 20:52:06
Original
Hi,
Sheets(KZ).Select
ist etwas einfacher.
mfg Kurt
KZ ist eine Variable!
05.09.2009 20:58:03
Backowe
Hallo Kurt,
ich denke, daß dies nur ein Beispiel ist, das Orginal wesentlich mehr Sheets beinhaltet. Ich hatte ihr dies ein Paar Postings vorher schon geschrieben, aber die Rückmeldung war, daß bei Sheeets("KZ")... sich der Debugger gemeldet hat.
Gruß Jürgen
Anzeige
AW: KZ ist eine Variable!
05.09.2009 21:20:22
Larissa
Ja richtig Jürgen, es gibt mehrere KZ-Sheets.
Wo soll ich denn das Datum in Text umwandeln? In dem KZ-Sheet, oder auch im "Eingabe"-Sheet? Meinst Du so: =TEXT(E12;"TT.MM.JJ")
Damit habe ich es noch nicht hinbekommen. Ich hatte vorher auch schon mal mit einer Hilfsspalte versucht und die TEXT-Formel für das Zusammenfügen genommen. Irgendwie bleibt das bei mir alles erfolglos :-(
Gruß, Larissa
Mache Dir doch das Leben nicht unnötig schwer! ;o)
05.09.2009 21:28:10
Backowe
Hallo Larissa,
ich meinte das Zellenformat in der Spalte B abändern in "TT.MM.JJJJ" , nicht eine zusätzliche Spalte.
Gruß Jürgen
Juuhuuu! - Danke Jürgen ;-)
05.09.2009 21:44:58
Larissa
Das war schon alles? Das ist ja schon echt peinlich.
1000 Dank, Du warst eine tolle Hilfe.
Lieben Gruß, Larissa

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige