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

INDEX statt INDIREKT und VBA

INDEX statt INDIREKT und VBA
18.02.2022 14:40:31
Ingo
Hallo zusammen
Ich habe eine Tabelle mit Daten, die jederzeit durch eine Power Query Abfrage überschrieben werden. Dadurch verändern sich stets die Feldinhalte und die Anzahl Zeilen dieser Tabelle.
Mein Ziel ist es, durch runterkopieren einer entsprechenden Formel bis zur momentanen letzten Zeile der dynamischen Tabelle, die Werte aus einer bestimmten Spalte dieser dynamischen Tabelle in eine Spalte rechts von dieser Tabelle zu kopieren. Und am Ende soll das ganze per VBA funktionieren.
Ich habe bereits 2 "Bausteine", mit denen ich meine bereits kurz vor der Lösung zu stehen, schaffe aber selber nicht den letzten Schritt.
Um die Daten aus der dynamischen Tabelle zu holen, nutze ich zur Zeit die Funktion =INDIREKT("d"&ZEILE($I3)) .
Ich merke aber, dass die Funktion INDIREKT extrem Ressourcen frisst, und habe gehört, dass dies durch Umstellung auf Funktion INDEX vermieden werden könnte.
Eine entsprechende Grundformel habe ich auch bereits =INDEX(A:G;3;4).
Meine Frage hierzu: Wie kann ich die Angabe für den Zeilenindex (hier die 3 für 3. Zeile) anpassen, damit der Zeilenindex beim runterkopieren hochgezählt wird?
Für das angestrebte runterkopieren der Formel per VBA, limitiert bis zur letzten vorhandenen Zeile der dynamischen Quelltabelle, habe ich auch bereits einen funktionierenden Code mit einer fiktiven Formel erstellt, in dem eben dann nur noch die vorgenannte, von mir gesuchte Formel integriert werden muss.
Hier mein Code, mit der Frage, ob ich dann die von mir gesuchte Formel 1:1 in den Code übernehmen kann, oder ob die Formel für VBA anders geschrieben werden muss?

Sub FormelRunterKopieren()
Range("P:P").Clear
Dim iRow As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("$P3").Formula = "=$J3"
Range("$P3:P" & iRow).FillDown
End Sub
Kann mir hier jemand von euch weiterhelfen?
Gruss Ingo

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
=INDEX(D:D;ZEILE(X3))
18.02.2022 14:55:16
WF
.
AW: =INDEX(D:D;ZEILE(X3))
18.02.2022 15:39:40
Ingo
Hallo WF
Vielen Dank. Wenn ich dies "nur" als Formel direkt in der Tabelle verwende, funktioniert es einwandfrei.
Sobald ich aber die Formel 1:1 in meinen VBA Code übernehme, bekomme ich einen Laufzeitfehler (1004). Ich gehe also davon aus, dass ich es in meinem VBA die Formel scheinbar anders schreiben muss ?


Sub FormelRunterKopieren()
Range("P:P").Clear
Dim iRow As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("$P3").Formula = "=INDEX(I:I;ZEILE(P3))"
Range("$P3:P" & iRow).FillDown
With ActiveSheet.Range("P3:P" & iRow)
.Value = .Value
End With
End Sub
Gruss Ingo
Anzeige
AW: =INDEX(D:D;ZEILE(X3))
18.02.2022 15:52:46
{Boris}
Hi,
Formula verlangt die englische Schreibweise. Also entweder FormulaLocal verwenden oder
Range("$P3").Formula = "=INDEX(I:I,ROW(P3))"
VG, Boris
AW: =INDEX(D:D;ZEILE(X3))
18.02.2022 16:53:29
Ingo
Hallo Boris
Vielen Dank.
Kleiner Fehler, grosse Wirkung. Jetzt läuft es :-)
Gruss Ingo

227 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige