Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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
Inhaltsverzeichnis

Wert suchen

Wert suchen
12.02.2013 11:41:03
Katrin
Hallo liebe alle,
ich fange nochmal von ganz neu an:
Wie kann ich einen Wert aus einer Tabelle in einer anderern Tabelle finden? Der Wert, der immer anders ist, steht in Datei 1 - im Range ("A2") und der soll in der gesamten Spalte A in der Datei 2 gesucht werden. Mit der folgenden Methode klappt das nicht:
Cells.Find(What:="20000000", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
Für 20000000 in A2... :-/
habt ihr eine Idee?

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert suchen
12.02.2013 12:22:49
Hugo
Hallo,
Dim C As Range
Set C = Tabelle2.Range("A:A").Find(Tabelle1.Range("A2"), lookIn:=xlValues, lookAt:=xlWhole)
If Not C Is Nothing Then
MsgBox C.Address
Else
MsgBox "Nicht gefunden"
End If
Tabelle1 und Tabelle2 sind hier die Codenamen der Blätter:
Suchbegriff steht in Tabelle1.Range("A2"), Suchspalte ist Tabelle2.Range("A:A")
Gruß
Hugo

Wenn du keinen Fehler willst, ...
12.02.2013 12:23:46
Luc:-?
…Katrin,
falls der Wert nicht gefunden wird (dann gibt's nichts zu aktivieren!) und das nur auf Spalte A begrenzen willst, musst du das ungefähr so machen:
Dim suchBg, fundSt As Range
suchBg = …
fundSt = Column(1).Find(What:=suchBg,… bzw Range("A:A")…
If Not fundSt Is Nothing Then fundSt.Activate Else …
Genauer geht's jetzt nicht, weil unklar ist, ob du tatsächlich Dateien meinst, also verschiedene Mappen → wo sind dann die Blätter? ←, oder das deine Blätter sein sollen. Die Mappen-/Blattangabe gehört nämlich noch dazu, falls sie/es zuvor nicht aktiviert wurde.
Gruß Luc :-?

Anzeige
AW: Wenn du keinen Fehler willst, ...
12.02.2013 13:01:54
Katrin
Geht das so?
Set myhauptsheet = Workbooks("XXX.xlsm").Sheets("2010")
Set mysheet2012 = Workbooks("XXX 2012.xlsx").Sheets("YYY 2011")
Set mysheet2011 = Workbooks("XXX 2011.xlsx").Sheets("ZZZ 2010")
Dim C As Range
Set C = mysheet2012.Range("A:A").Find(myhauptsheet.Range("A2"), LookIn:=xlValues, lookAt:=xlWhole)
Set D = mysheet2011.Range("A:A").Find(myhauptsheet.Range("A2"), LookIn:=xlValues, lookAt:=xlWhole)
If Not C Is Nothing Then
ElseIf Not D Is Nothing Then
GoTo Weiter:
End If
Weiter:
Next lAnz

Du hast What:= vergessen, ...
12.02.2013 13:39:01
Luc:-?
…Katrin;
außerdem gehören Deklarationen (hier Dim und Const) in den meisten PgmSprachen (Ausnahmen sind so organisierte wie J[ava]Script) der Übersicht halber immer an den PgmAnfang (VBA sucht die ohnehin zuerst). Eine Variable für den Suchbegriff (suchBg) wäre auch nicht verkehrt und die Variablen für die beiden Suchmappen/-blätter können entfallen, wenn diese vor dem Suchvorgang aktiviert wdn (könnte sein, dass die Suche sonst nicht klappt → testen, könnte mich irren!).
Außerdem willst du wohl erst in der einen Mappe suchen und nur bei Nichterfolg in der anderen. Dann müsste der Rest wohl so lauten:
If Not C Is Nothing Then
GoTo Weiter
ElseIf Not D Is Nothing Then
Weiter: 'hier folgt die Behandlung der 1.Fundstelle
Else:   'hier folgt, was passieren soll, wenn es keine Fundstelle gibt
End If
Statt C solltest du besser so etwas wie fundSt verwenden! Außerdem ist das nachfolgende Next hier völlig unmotiviert, da es Abschluss/Return-Bedingung einer For-Schleife ist, die gar nicht angelegt wurde. Die Suche wird mit FindNext fortgesetzt. Das muss aber dann auch entsprechend organisiert wdn. Empfehle, das mal in der VBE-Hilfe nachzulesen! Außerdem gibt's genügend Bspp im Forumsarchiv und ist auch auf diversen xlWebSites und im VBA-WikiBook erklärt.
Luc :-?

Anzeige
AW: Du hast What:= vergessen, ...
12.02.2013 16:47:23
Katrin
Also so sieht nun mein Code aus... Mein problem ist jetzt, dass der nicht den gefilterten Wert nimmt, der in dem beispiel in Zeile 39 ist, sondern dass er natürlich jetzt auf die 2. zeile springt. Wie kann ich das vermeiden?
Sub suchenUkopieren()
Dim ältestDat, jüngstDat, ältestDat2, jüngstDat2 As Date
Dim VK As Range
Dim C, D As Range
Set myhauptsheet = Workbooks("XXXX.xlsm").Sheets("yy")
Set mysheet2012 = Workbooks("XXXXX.xlsx").Sheets("zzz")
Set mysheet2011 = Workbooks("XXX").Sheets("iii")
myhauptsheet.Activate
Range("A1").Select
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select 'HIER geht er in Zeile 2
Set C = mysheet2012.Range("A:A").Find(myhauptsheet.Range("A2"), LookIn:=xlValues, lookAt:= _
xlWhole)
Set D = mysheet2011.Range("A:A").Find(myhauptsheet.Range("A2"), LookIn:=xlValues, lookAt:= _
xlWhole)
If Not C Is Nothing Then
GoTo Datumprüfen:
ElseIf Not D Is Nothing Then
GoTo Datumprüfen2:
GoTo Weiter:
End If
Datumprüfen:
sFilter = mysheet2012.Cells(1, 1).Value
mysheet2012.Range("$A$1").AutoFilter Field:=1, Criteria1:=C
ältestDat = Format(WorksheetFunction.Min(Range("g:g")), "dd.mm.yy")
jüngstDat = Format(WorksheetFunction.Max(Range("g:g")), "dd.mm.yy")
mysheet2012.Activate
ältestDat2 = Format(WorksheetFunction.Min(Range("g:g")), "dd.mm.yy")
jüngstDat2 = Format(WorksheetFunction.Max(Range("g:g")), "dd.mm.yy")
If ältestDat > ältestDat2 Or jüngstDat > jüngstDat2 Then
'alle Zeilen kopieren die älter oder jünger sind
Datumprüfen2:
sFilter = mysheet2011.Cells(1, 1).Value
mysheet2012.Range("$A$1").AutoFilter Field:=1, Criteria1:=D
ältestDat = Format(WorksheetFunction.Min(Range("g:g")), "dd.mm.yy")
jüngstDat = Format(WorksheetFunction.Max(Range("g:g")), "dd.mm.yy")
mysheet2012.Activate
ältestDat2 = Format(WorksheetFunction.Min(Range("g:g")), "dd.mm.yy")
jüngstDat2 = Format(WorksheetFunction.Max(Range("g:g")), "dd.mm.yy")
If ältestDat > ältestDat2 Or jüngstDat > jüngstDat2 Then
'alle Zeilen markieren kopieren die älter oder jünger sind
End If
Weiter:
End 

Sub 'Springt wieder zum vorherigen Filter
Könnte man das irgendwie so schreiben:
Range("A1").Select
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select

Anzeige
What:= durfte hier natürlich fehlen ...
13.02.2013 02:40:23
Luc:-?
…Katrin;
ansonsten einfach mal häppchenweise durchkauen…
Range("A1").Select
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select 'HIER geht er in Zeile 2

Was soll das? In der 1.Zeile selektierst du Zelle A1 des aktiven Blattes, was auch ihre Aktivierung bedeutet. Dann ist wohl kaum zu erwarten, dass sich bis zur 2.Zeile die ActiveCell ändert! Warum wählst du nicht gleich Cells(2, 1), obwohl das ja eh überflüssig ist, weil du ja gleich anschließend suchst. Irgendetwas anderes wird dann übrigens in der ganzen Prozedur nicht mehr ausgewählt! Wenn man eine zelle in räumlicher Abhängigkeit von einer anderen Zelle auswählen will, kann man auch mit .Offset([-]zeilenzähler, [-]spaltenzähler) arbeiten (in VBE-Hilfe nachlesen!).
2.Häppchen: Das GoTo Weiter sollte nach dem End If stehen! Überleg dir mal, warum! ;->
Übrigens ist der Doppelpkt erst nach der eigentl Marke erforderlich, nicht nach dem Markennamen im Sprungbefehl. Kannst du in meinem Bsp auch so sehen.
Mit dem Rest kann ich nicht mehr viel anfangen.
Gruß Luc :-?

Anzeige
AW: What:= durfte hier natürlich fehlen ...
13.02.2013 08:56:18
Katrin
Also den Teil...
Range("A1").Select
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select 'HIER geht er in Zeile 2
...wollte ich nehmen um immer in die 2. SICHTBARE Zeile zu wechseln um dort das Suchkriterium für die anderen Dateien vorzugeben.
In der 1. Zeile stehen ja immer die Überschriften und ab der 2. Zeile die Werte.
Hiermit springt er in die Zelle A2, anstatt in die sichtbare Zeile (z.B. A39) zu springen (es wurde hier vorab gefiltert) - und das ist mein Problem!
Wie komme ich auf die nächste sichtbare Zeile?

Hat sich erledigt...
13.02.2013 09:14:06
Katrin
...mit dem Code:
ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
Vielen Dank für deine (eure) Hilfe!!!

Anzeige
AW: Wert suchen
12.02.2013 12:25:53
Rudi
Hallo,
eine Frage der Referenzierung.
Was ist gerade aktiv, wenn du den Coide ausführst?
Gruß
Rudi

AW: Wert suchen
12.02.2013 12:40:16
Katrin
Erst einmal vielen vielen Dank für eure HILFE!!!
Es gibt 2 Exceldateien (eigentlich 3 Dateien)
Der Wert in A2 soll in der 2. Datei gesucht werden, wenn der Wert dort nicht vorhanden ist, soll der auch noch in die 3. datei schauen, ob der Wert dort vorhanden ist.
Der Wert in A2 (Z.B.: "1234" kann aber auch öfters in einer Datei vorkommen!
(Ich benötige diese Suchfuntion um später noch zu prüfen ob es hier jüngere oder ältere Werte gibt...)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige