Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vlookup mit Tabellenbereich - Fehler 1004 ungelöst

Forumthread: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst

Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 12:38:11
VBANewbie
Hallo zusammen,

ich taste mich gerade an Makros ran und freue mich über das bisher gelernte.
Im Zuge eines Projektes habe ich diverse Formelmakros gebaut und genutzt, welche auf intelligente Tabellen zugreifen. Jetzt weigert sich jedoch das Makro einen Xverweis oder auch Sverweis auszuführen.
Händisch in die Zelle eingetragen funktionieren die Formeln. Alle Varianten haben zu dem gewünschten Ergebnis geführt.

Leider mag das Makro meine Formel W nicht und als Fehler gibt es immer die 1004.
Mit Support von Chat GPT komme ich ebenfalls nicht weiter und hoffe hier auf Schützenhilfe.


'Adding Formulas to Import Costs to elimante mixups due to several currencys

Sub CleanCurrencyImportCosts()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Import_Costs")
Dim lastrow As Long

' Find the last row with data in column A
lastrow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

'Define formula Names

Dim formulaT As String 'Sum of Contract costs
Dim formulaU As String 'Sum of Maintenance costs
Dim formulaV As String 'Sum of out of contract costs

Dim formulaW As String 'FDL1 in USD
Dim formulaX As String 'FDL2 in USD
Dim formulaY As String 'RFM in USD
Dim formulaZ As String 'GLC rate in USD
Dim formulaAA As String 'GLC Maintenance in USD
Dim formulaAB As String 'Maintenance in USD
Dim formulaAC As String 'Out of contract fees in USD

'Set formulas
formulaT = "=SUM(W2+x2+y2+z2)" 'Contract_fees = fdl1+fdl2+RFM_Miete+glc_rate
formulaU = "=SUM(AA2+Ab2)" 'GLC maintenance + Maintenance
formulaV = "=SUM(AC2)"
formulaW = "=ROUND(VLOOKUP(G2,Tabelle4[[#Alle];[Currency code]:[Exchange rate]],2,false)*F2,2)"

'Write formulas into cells
ws.Range("T2:T" & lastrow).Formula = formulaT
ws.Range("U2:U" & lastrow).Formula = formulaU
ws.Range("V2:V" & lastrow).Formula = formulaV
ws.Range("W2:W" & lastrow).Formula = formulaW


End Sub


Viele Grüße Alexandra eure VBANewbie
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 12:42:10
Onur
Der Code ohne die dazugehörige Datei ist wertlos.
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:06:18
Yal
Hallo Alexandra,

zwecks Entdecken, gehe den Weg umgekehrt: setze in der Zelle eine gültige Formel und lasse diese in der Version für VBA herausgeben. Es gibt 4 Versionen:

Sub Test_Formel_in_W2()

With ThisWorkbook.Sheets("Import_Costs").Range("W2")
Debug.Print .Formula
Debug.Print .FormulaLocal
Debug.Print .FormulaR1C1
Debug.Print .FormulaR1C1Local
End With
End Sub

Dann kannst Du auswählen, was Du einsetzen möchte.

VG
Yal
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:23:06
VBANewbie
Hey Yal,

vielen Dank für dein Antwort. Das was du schreibst ist für mich noch ein Bömisches Dorf.

Bei dem Versuch das Makro auszuführen ist leider nicht passiert, kein Fenster das sich öffnete oder ähnliches. Was muss ich tun, damit das Debug-Fenster aufgeht?

Viele Grüße
Alexandra
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 17:56:48
Yal
Hallo Alexandra,

die ganz strenge Antwort wäre "die Onlinehilfe zu debug.print lesen".
Weniger streng: nach "excel vba debug" googeln und aus den Antworten die Seite von "learn.microsoft.com" bevorzugen. Es sind nicht zwangläufig die besten, aber deren Aufbau ist konsequent immer gleich, sodass man sich nach dem Eingewöhnungszeit dort schneller zurecht findet als immer auf wechselnde Angebot zu gehen.

Kurz: das Debug-Fenster ist auch "Direktfenster" oder "Direkt-Bereich" benannt und wird im Visual Basic Editor unter Menü "Ansicht", "Direktfenster" (oder Strg+g) angezeigt. im Standardzustand ist diese Fenster bereits offen (die Fenstertiteln durchlesen).

Der Code liefert nur was ,wenn in einer bestimmten Zelle eine Formel vorhanden ist. Welche erfährst Du, wenn Du den gelieferten Code genau liest. Es ist keine Chinesisch. lese den Code laut (hört sich bescheuert, ist aber so) und auf deutsch: mit diesem Workbook davon das Blatt "..." davon den Bereich "W2". usw.

Ein With/End with bezeichnet einen Block, in dem alles was mit einem Punkt anfängt sich auf das, was vom With qualifiziert wurde, bezieht. Also Formula von "W2".

VG
Yal
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:08:20
peter
Hallo

Formula verwendet die englische Schreibweise und Du hast einen ";" eingebaut.

Peter
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:17:24
VBANewbie
Hallo Peter, vielen Dank für deine Antwort. Das Semikolon auf ein Komma gesetzt macht leider keinen Unterschied. Die Formel auf Deutsch, ebenfalls nicht. Habe diverse Varianten ausprobiert auch mit Sverweis und XVerweis gearbeitet und dann meine ReferenzTabelle danach umgestellt. Leider ohne Erfolgt.
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:38:52
VBANewbie
Hallo Peter,

auch in dieser Schreibweise "=RUNDEN(SVERWEIS(G3;Tabelle4[[#Alle];[Currency code]:[Exchange rate]];2;FALSCH)*F3;2)" bekomme ich den Fehler 1004.

Im Verdacht habe ich, dass die beiden Spalten der intelligenten tabelle mir Probleme bereiten.
Denn in einem anderen Arbeitsblatt arbeite ich grundsätzlich schon mit der selben Tabelle, jedoch steht hier schon in der ersten Spalte der passende Wert für den SVERWEIS-

formulaAH = "=ROUND(VLOOKUP(AG5,Tabelle4[#ALL],3,false)*AA5,2)"

Daher habe ich es dann mit einem XVERWEIS versucht, leider auch ohne Erfolgt.

Hast du eine andere Idee dazu?

Viele Grüße
Alexandra
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:34:34
daniel
bei .Formula muss die Formel auf englisch geschrieben werden.
neben den bekannten Unterschieden (Funktionsnamen, Parametertrennzeichen, Dezimalzeichen) muss man bei Verwendung von Formatierten Tabellen auch die Unterschiede in den automatischen Namenszusätzen berücksichtigen, die Anzeigen auf welchen Teil der Tabelle referenziert wird (hier ggf "alle" vs "all")
der nächste Punkt, der mit dem Neuen Excel hinzugekommen ist, ist dass man Formeln, die einen Spill in die Nachbarzellen haben, mit ".Formula2" eingegeben werden müssen (gibt zwar keinen Fehler, dafür aber keinen Spill)

im zweifelfall müsstest du die Datei mit den Daten und dem Makro mal hochladen, damit wir den Fehler konkret nachvollziehen können und unserer Lösungsvorschläge überprüfen können, bevor wir sie dir schicken.
das ist wie beim Arzt. Wenn der Patient auf dem Tisch liegt, gestaltet sich eine Diagnose und die Auswahl der richtigen Therapie wesentlich einfacher als bei einer Telefonischen Beratung.

Gruß Daniel
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 14:08:18
daniel
Hi
kannst du die Datei bitte hier in Herber hochladen?
ich will da jetzt mein OneNote nicht mit belasten und bekomme den normalen download nicht angezeigt.

Gruß Daniel
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 14:12:38
VBANewbie
Hey Daniel,

anbei der Link, bin gespannt was du findest. https://www.herber.de/bbs/user/171922.xlsm

Wie ich Peter eben auch schrieb, wenn ich in der formel auf "Tabelle 14 [all] gehe, klappt es mit der Formel. Ich habe im Verdacht, dass ich nur einen Teil der Tabelle ansprechen will, zu dem Problem führt.

Viele Grüße
Alexandra
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 14:25:39
daniel
Hi
ich finde nichts neues.
du musst halt die Fehler korrigieren, die dir bisher genannt wurden, also aus dem Semikolon in der Formel ein Komma machen und aus dem "Alle" ein "all", damit die Formel durchgängig auf Englisch geschrieben ist, so wie es .Formula erfordert.
damit läuft dann der Code bei mir fehlerfrei durch.

der #NV-Fehler in Zeile 12 hat nichts mit dem Code zu tun, sondern damit dass in der letzten Zeile in Spalte G noch keine Währung eingetragen ist, die auch in der Tabelle4 vorkommt.

Gruß Daniel
Anzeige
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 14:11:59
peter
Hallo

=ROUND(VLOOKUP(G2,Tabelle4[[#All],[Currency code]:[Exchange rate]],2,FALSE)*F2,2)

Fehler: #ALL statt #ALLE

Peter
AW: Vlookup mit Tabellenbereich - Fehler 1004 ungelöst
02.09.2024 13:17:05
daniel
Hi
Peter hat dir ja schon den entscheidenden Hinweis gegeben.

hierzu ein kleiner Tip:
wenn die Formeln von Hand eingebeben funktionieren, dann kannst du dir den Formeltext für VBA in der gewünschten Schreibweise einfach im Direktfenster anzeigen lassen, um damit solche lästigen Schreibfehler zu vermeiden:
?Selection.Formula

nach Wunsch natürlich auch in den anderen Schreibweisen .FormulaLocal, .FormulaR1C1.

wenn die Formel noch Anführungszeichen enthält, dann sollte man das so erweitern:
?Replace(Selection.Formula, """", """""")

das verdoppelt die Anführungszeichen in der Formel und damit kann man dann die Ausgabe 1:1 in den Code übernehmen.

Gruß Daniel
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige