Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

VLookup nach links

VLookup nach links
Horst
Hallo Excel-Freunde,
eine Frage, die ihr sicher schnell beantworten könnt: Mit folgendem Befehl suche ich per VBA mit dem SVerweis ausgehend von Spalte A (Datumsspalte) nach rechts, um dort den Wert in der 40. Spalte ausgeben zu lassen:
"VLOOKUP(today(),'C:\Dokumente und Einstellungen\User\Desktop\Test_Order\Test_Order\[results.xls]results'!R1C1:R65536C125,40)"
Jetzt ist das Problem, das das Datum nicht in Spalte A, sondern in der 127. Spalte steht und von dort aus nach links der Wert in der 40. Spalte gesucht werden soll. Wie müsste die obige VBA-Anweisung dann aussehen?
Zudem findet der Befehl nur "ganze Tage". Wie müsste der Befehl aussehen, damit nach dem aktuellen Datum und der aktuellen Uhrzeit (hh:mm) gesucht wird. Mit "now" (statt "today") bekomme ich Laufzeitfehler 13 "Typen unverträglich". Die Datumwerte haben folgende Form: 40690.825, 40690.82569, 40690.82639, 40690.82708, 40690.82778 usw. (minütliche Daten)
Besten Dank für Eure Vorschläge!

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VLookup nach links
01.06.2011 23:24:14
Mustafa
Hallo Horst,
unter http://www.excelformeln.de/formeln.html?welcher=24 steht für SVerweis nach links diese Formel :
Suchspalte ist B
Ergebnisspalte ist A
Suchbegriff ist Schulze
=INDEX(A:A;VERGLEICH("Schulze";B:B;0))
Müsstest du halt dann nur für deine Bedürfnisse umstellen und in deinen Code einbinden.
Rückmeldung obs hilft wäre nett.
Gruß aus der Domstadt Köln.
AW: VLookup nach links
01.06.2011 23:32:08
Horst
Hallo Mustafa,
danke für den Hinweis, das habe ich auch bereits gefunden. Nur kann ich "INDEX(A:A;VERGLEICH("Schulze";B:B;0))" so einfach in eine VBA-Prozedur reinschreiben? "SVERWEIS" funktioniert ja im VBA-Code auch nicht, dort heißt es "VLookup". Wie muss ich dann "Index" und "Vergleich" innerhalb des Codes angeben? Evtl. kann jemand ein Bsp. reinstellen.
Die zweite Frage mit der genauen Systemzeit ist noch offen. Wenn ich in der 127. Spalte Datum + Uhrzeit (minütlich) stehen habe, ist dann "now" der richtige Befehl?
Gruß, Horst
Anzeige
AW: VLookup nach links
02.06.2011 01:34:11
Florian
Hallo Horst!
Nimm doch einfach die Formeln mit dem VBA-Recorder aus, dann siehst Du's. Genauso mit der Uhrzeit in min/h.
Gruss Florian
AW: VLookup nach links
02.06.2011 06:42:47
BoskoBiati
Hallo Horst,
mit FormulaLocal kannst Du die Formeln in VBA (fast) so eingeben, wie Du es bei Formeln gewohnt bist.
Now ist sekundengenau, da wäre die Frage was Du vorhast. Entweder suchst Du nach Ganzzahl, dann hast Du es auf Tage genau, oder Du musst festlegen, wie genau der Wert gesucht werden soll. Vergleich kann ja bei sortierten Listen auch nach dem nächstkleineren Wert suchen.
Gruß
Bosko
zur 1. Frage ...
02.06.2011 07:11:37
Matthias
Hallo
 ABCD
133Schulze99Lehmann
212Meier33Schulze
399Lehmann12Meier

Formeln der Tabelle
ZelleFormel
C1=INDEX(A:A;VERGLEICH(D1;B:B;0))
C2=INDEX(A:A;VERGLEICH(D2;B:B;0))
C3=INDEX(A:A;VERGLEICH(D3;B:B;0))


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4


MsgBox WorksheetFunction.Index(Columns(1), WorksheetFunction.Match("Schulze", Columns(2), 0))
Userbild
Anzeige
AW: VLookup nach links
02.06.2011 11:37:35
fcs
Hallo Horst,
theoretisch sollte es so funktionieren.
Bei der Suche nach einer Uhrzeit kommt sehr schnell die Rechengenauigkeit von Excel ins Spiel.
Minuten sind excel-intern Zahlen mit 10 Nachkommenstellen.
Bei manueller Eingabe von Datum/Zeit funktioniert es nach meiner Erfahrung immer.
Ist Datum+Uhrzeit das Ergebnis einer Berechnung, dann kann es zu Rundungsabweichungen kommen und Match findet die Datum/Zeitangabe nicht. In diesem Fall muss berechnetes Datum/Zeit nochmals aufbereitet werden mit Formel:
=DATWERT(TEXT(AM2;"JJJJ-MM-TT")) + ZEITWERT(TEXT(AM2;"hh:mm"))
Gruß
Franz Sub aaTime_min() Dim vTime As Date, vZahl As Double, vZeile, wert On Error GoTo Fehler vTime = CDate(Format(Now, "YYYY-MM-DD hh:mm")) vZahl = CDbl(vTime) vZeile = Application.WorksheetFunction.Match(vZahl, Columns(127), 0) wert = Application.WorksheetFunction.Index(Columns(40), vZeile, 1) 'Testausgabe Anzeige: MsgBox vTime & vbLf & vZahl & vbLf & wert Fehler: With Err Select Case .Number Case 0 'Alles OK Case 1004 wert = "nicht gefunden" Resume Anzeige Case Else MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description End Select End With End Sub
Anzeige
AW: VLookup nach links
02.06.2011 14:50:45
Horst
Hallo Franz,
danke für den Tipp; irgendwie denke ich, dass man die Datumswerte (z.b. 40695.88611 für 01.06.2011 21:16) auf zwei Nachkommstellen runden muss, damit sie gefunden werden. Es handelt sich dabei um minütliche Daten. Ich habe dir anbei eine Beispielmappe samt VBA-Code (in Modul 1) hochgeladen:
https://www.herber.de/bbs/user/75137.zip
Grundsätzlich geht es darum, dass die in der 41. Spalte (Spalte "AO") des Tabellenblatts "results" stehenden Werte abhängig von der Systemzeit gefunden werden und das Ergebnis in eine .html geschrieben wird. Ist also die aktuelle Systemzeit der 01. Juni 2011 21:16, soll in Spalte "DV" nach dem Datum gesucht werden und der zugehörige Zeilenwert der Spalte "AO": 21.40 in die .html geschrieben werden.
In untenstehenden VBA-Code steht der Befehl "VLookup" der natürlich nicht funktioniert, da einerseits nach links statt nach rechts gesucht werden soll und andererseits die "now"-Anweisung hinsichtlich der Nachkommestellen zu genau ist. Wie baue ich hier ein "=INDEX(AO:AO;VERGLEICH(DV2;DV:DV;0))" sowie dein obiges Makro ein?
Wenn noch Zeit bleibt, würde mich dann abschließend noch interessieren, ob man in der .html eine "bedingte Formatierung" berücksichtigen kann, sodass sofern der aus Spalte "AO" ausgelesene Wert größer 50 ist, er in der .html farblich hinterlegt wird.
Allerbesten Dank vorab für deine Bemühungen!
Gruß, Horst
Anzeige
AW: VLookup nach links
02.06.2011 18:09:27
Horst
Hallo Franz,
besten Dank. Ich habe ein kleines Problem: Selbst wenn ich die Systemzeit auf 01.06 21:00 Uhr rückstelle, bekomme ich die Fehlermeldung "Laufzeitfehler 1004: Die Methode 'ExecuteExcel4Macro' für das Objekt _Global ist fehlgeschlagen. Woran könnte das liegen?
Gruß , Horst
AW: VLookup nach links
02.06.2011 22:15:49
fcs
Hallo Horst,
den Fehler kann ich bei mir (Excel 2007) nicht nachvollziehen.
Möglicherweise wird der Formeltext zu lang (mehr als 255 Zeichen) weil du deine Dateien in einem Pfad speicherst, der sehr viele Zeichen beinhaltet. Speichere deine Dateien z.B. mal im Verzeichnis. C:\Dokumente\Test
und passe das Makro an.
Damit es keine Fehlermeldung gibt, wenn die Uhrzeit nicht gefunden wird, muss die Variablendeklaration korrigiert werden.
Außerdem hab ich noch einige nicht benutzte Objektvariablen gelöscht bzw. umbenannt.
Hier eine Datei, die bei mir funktioniert.
https://www.herber.de/bbs/user/75141.xls
Gruß
Franz
Anzeige
AW: VLookup nach links
02.06.2011 23:20:16
Horst
Hallo Franz,
der Fehler unter Excel 2003 steht offenbar tatsächlich mit der Länge des Formeltextes in Verbindung (55 Zeichen scheinen hier bereits zu viel zu sein; gibt es hier Abhilfe außer Excel 2010 zu kaufen?). Ich habe den Pfad auf "C:\Test_Order" geändert und die Werte werden sowohl im Arbeitsblatt als auch in der .html korrekt angezeigt. Einfach großartig.
Du hast erwähnt, dass sofern die Uhrzeit nicht gefunden wird, die Variablendeklaration korrigiert werden müsste. Ich nehme an, dass ist bereits geschehen?
Nochmal allerbesten Dank für deine Bemühungen!
Schöne Grüsse, Horst
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige