Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1536to1540
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

VBA - Sverweis Adresse

VBA - Sverweis Adresse
02.02.2017 15:35:10
PS
Servus zusammen,
Ich habe ein kleines Problem und zwar habe ich eine Liste aus der ich mir per VBA Daten ziehe. Nun habe ich u.a. einen Sverweis in dem Makro, welches mir aktuell einen Wert zieht. Das Problem ist nun, dass der "Wert" welchen es sich zieht, eine Formel ist, die sich ständig verändert. Mit meinem Code bekomme ich allerdings nur einen fixen Wert heraus. Ist es also möglich den Code so umzuschreiben, dass als Ergebnis eine Adresse herauskommt?
aktueller Code (abgekürzt):
TbA.Cells(NextRow, 13).Value = Application.VLookup(Cells(NextRow, 9).Value, LookupRange, 2, False)
Vielen Dank!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Sverweis Adresse
02.02.2017 16:22:42
Daniel
Hi
wenn du so eine automatische Aktualisierung willst, musst die entsprechende Sverweis-Formel in der Zelle stehen.
Du kannst die Formel auch per VBA in die Zelle schreiben:
TbA.Cells(NextRow, 13).FormulaR1C1 = "=VLookUp(RC9,'" & LookupRange.worksheet.Name & "'!" & LookupRange.Address(1, 1, xlR1C1) & ",2,False)"
das wäre sogar vorteilhaft, wenn du diese Formel per Schleife in mehrere Zellen schreiben willst.
denn dann brauchst du nicht mehr jeden Wert einzeln in die Zelle schreiben, sondern kannst die Formel in alle betroffenen Zellen gleichzeitig eintragen.
dh statt:
For NextRow = x to y
TbA.Cells(NextRow, 13).Value = Application.LookUp(....)
Next
dann einfach:
TbA:Cells(x, 13).Resize(y - x + 1).FormulaR1C1 = "=VLookup(....)"
Gruß Daniel
Anzeige
AW: VBA - Sverweis Adresse
02.02.2017 16:54:01
PS
Hi Daniel,
Danke für die schnelle Antwort. Bin mir nicht sicher ob ich irgendwo einen Fehler reinmache, allerdings funktioniert die Formel so bei mir nicht. Sie fügt nicht nur in die eigentliche Zelle in die sie die Adresse bzw den Verweis eintragen soll ein, sondern in alle gezählten Zellen darunter. Zudem fügt sie die Formel auch als Text ein, also nicht als Formel.
AW: VBA - Sverweis Adresse
02.02.2017 17:21:02
Daniel
HI
naja, der Formeltext muss richtig geschrieben sein, die Zelle in die du einfügst, darf nicht als Text formatiert sein.
ansonsten gilt halt immer, solange ich nicht weiß, was du konkret programmiert hast und wie deine Datei dazu aussieht, kann ich dir auch nicht sagen, warum es bei dir nicht funktioniert.
Gruß Daniel
Anzeige
AW: VBA - Sverweis Adresse
02.02.2017 17:30:30
PS
Hi Daniel,
Da hast du natürlich recht! Also die Formel funktioniert (da hatte ich was falsch eingetragen), allerdings fügt sie weiterhin die Formeln über das "Ziel hinaus" ein, also immer weiter nach unten (und nicht nur in die eine Zelle). Anbei mal der ganze Code.
Sub Aktien_hinzu()
Dim TbI, TbA, LetzteZeileI As Long, LetzteZeileA As Long
Dim x As Long, Wert, Wert2, NextRow As Long
Set TbI = Worksheets("Input")
Set TbA = Worksheets("Aktien")
Set TbW = Worksheets("Input Währung")
Set LookupRange = Worksheets("Input Währung").Range("B3:C23")
LetzteZeileI = TbI.Cells(TbI.Rows.Count, 1).End(xlUp).Row
LetzteZeileA = TbA.Cells(TbA.Rows.Count, 1).End(xlUp).Row
For x = 2 To LetzteZeileI Step 1
Wert = TbI.Cells(x, 10).Value
Wert2 = TbI.Cells(x, 11).Value
If Wert = "EQUITIES" And Wert2 > 0 Then
TbA.Cells(LetzteZeileA + 1, 1).EntireRow.Insert
NextRow = TbA.Cells(TbA.Rows.Count, 1).End(xlUp).Row + 1
TbI.Cells(x, 3).Copy Destination:=TbA.Cells(NextRow, 2)
' Die Eröffnung der Transaktion
TbI.Cells(x, 11).Copy Destination:=TbA.Cells(NextRow, 5)
' Die Stückzahl wird eingetragen
TbI.Cells(x, 23).Copy Destination:=TbA.Cells(NextRow, 9)
' Die Währung wird eingetragen
TbI.Cells(x, 13).Copy Destination:=TbA.Cells(NextRow, 10)
' Der Einstandskurs wird eingetragen
TbI.Cells(x, 21).Copy Destination:=TbA.Cells(NextRow, 11)
' Der FX-Einstandskurs wird übertragen
TbI.Cells(x, 7).Copy Destination:=TbA.Cells(NextRow, 8)
' Der BloombergTicker wird eingetragen
TbA.Cells(NextRow, 4).Value = "long"
' Gibt bei neuen Aktienkäufen immer den Wert "long" an
TbA.Cells(NextRow, 3).Value = "offen"
' Gibt bei neuen Aktienkäufen immer den Wert "offen" an
Range(TbA.Cells(LetzteZeileA, 7), TbA.Cells(LetzteZeileA + 1, 7)).FillDown
' Autofillt die Formel bei GICS_Industry_Name ein
Range(TbA.Cells(LetzteZeileA, 12), TbA.Cells(LetzteZeileA + 1, 12)).FillDown
' Autofillt die Formel bei Last_Price
Range(TbA.Cells(LetzteZeileA, 14), TbA.Cells(LetzteZeileA + 1, 14)).FillDown
' Autofillt die +/-
Range(TbA.Cells(LetzteZeileA, 15), TbA.Cells(LetzteZeileA + 1, 15)).FillDown
' Autofillt die P/L in EUR
Range(TbA.Cells(LetzteZeileA, 16), TbA.Cells(LetzteZeileA + 1, 16)).FillDown
' Autofillt die P/L in BP
Range(TbA.Cells(LetzteZeileA, 6), TbA.Cells(LetzteZeileA + 1, 6)).FillDown
' Autofillt Wertpapier
TbA.Cells(NextRow, 13).Resize(LetzteZeileI - x + 1).FormulaR1C1 = "=VLookUp(RC9,' _
" & LookupRange.Worksheet.Name & "'!" & LookupRange.Address(1, 1, xlR1C1) & ",2,False)"
End If
Next x
End Sub

Kann aber gut sein, dass ich irgendwo noch n Fehler drin habe.
Anzeige
AW: VBA - Sverweis Adresse
02.02.2017 17:38:16
Daniel
Hi
entweder MIT Schleife die Formel in jede Zellen einzeln eintragen ODER mit .Resize die Formeln in alle Zellen gleichzeitig in einem Schritt eintragen, dh OHNE Schleife.
hier aber als ENTWEDER ODER, aber nicht beides gleichzeitig.
Gruß Daniel
AW: VBA - Sverweis Adresse
02.02.2017 17:49:32
PS
Hi Daniel,
Klappt perfekt! Sorry für die Zeitverschwendung, du hattest es ja oben sogar geschrieben.
Tausend Dank auf jeden Fall!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige