Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1604to1608
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

Formel in bestimme Range einfügen

Formel in bestimme Range einfügen
28.01.2018 23:48:05
Michael
Hallo,
ich möchte eine bestimmte Formel in den Zellen einer bestimmen Range einfügen. Die Formel soll dabei abhängig von der Spalte der jeweiligen Zelle sein.
Das habe ich mit folgender Formel/Code (Bereich der fett markiert ist) probiert und erhalte in den jeweiligen Zellen leider nur "FALSE". Hat jemand eine Ahnung was ich falsch gemacht habe, bzw. wie ich dieses Problem lösen kann?
Public Sub fuellen()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("DB Backlog")
Debug.Print (semana)
Dim rlast As Integer
Dim rlast2 As Integer
Dim iRunner As Integer
Dim sSpalte As String
Dim jRunner As Integer
Dim jSpalte As String
Dim copy_area As Range
Dim Formula As Variant
Dim FormulaV As Variant
Dim k_range As Range
Dim Bereich As Range
Dim copyn As Range
Dim cell As Range
rlast2 = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row
For iRunner = 1 To 26
sSpalte = ws.Cells(3, iRunner).Value
If sSpalte = "Description" Then
For Each cell In ws.Range(ws.Cells(rlast2, iRunner).End(xlUp).Offset(1, 0), ws.Cells(rlast2, iRunner))
cell.Value = FormulaLocal = "=VLOOKUP(B & cell.row,'DB Items'!$A$1:$B$2824,2,0)"

'
' Set k_range = ws.Range(ws.Cells(rlast2, iRunner).End(xlUp).Offset(1, 0), ws.Cells(rlast2, iRunner))
' Debug.Print (k_range.Address)
'' k_range = ws.Cells(rlast2, iRunner).End(xlUp).Offset(-1, 0).Formula
' Set copyn = ws.Cells(rlast2, iRunner).End(xlUp).Offset(-1, 0)
' With k_range
' .FormulaLocal = "=VLOOKUP(B4,'DB Items'!$A$1:$B$2824,2,0)"
' Set Bereich = Sheet9.UsedRange
' Bereich.AutoFilter Field:=iRunner, Criteria1:="#N/A"
' Debug.Print (iRunner)
' End With
Next
End If
Next

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in bestimme Range einfügen
29.01.2018 00:00:19
Sepp
Hallo Michael,
ungetestet!
Public Sub fuellen()
Dim lngLast As Long
Dim lngCol As Long
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("DB Backlog")

With ws
  lngLast = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
  For lngCol = 1 To 26
    If .Cells(3, lngCol) = "Description" Then
      .Range(.Cells(4, lngCol), .Cells(lngLast, lngCol)).Formula = _
        "=VLOOKUP(B4,'DB Items'!$A$1:$B$2824,2,0)"
    End If
  Next
End With

Set ws = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Formel in bestimme Range einfügen
29.01.2018 18:31:03
Michael
Servus Sepp, vielen Dank für deine Antwor!
Dein Code hat funktioniert, nur soll die Formel nicht immer auf die Zelle B4 beziehen sondern sich dynamisch verändern. Dies habe ich durch die folgende Änderung (fett markiert) probiert, funktioniert leider nicht. Hast du zufällig eine Idee wie man das lösen kann?

Sub fuellen2()
Dim lngLast As Long
Dim lngCol As Long
Dim ws As Worksheet
Dim i As Integer
Set ws = ThisWorkbook.Worksheets("DB Backlog")
With ws
lngLast = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
For lngCol = 1 To 26
i = .Range(.Cells(lngLast , lngCol).End(xlUp).Offset(1, 0)).Row
If .Cells(3, lngCol) = "Description" Then
.Range(.Cells(lngLast, lngCol).End(xlUp).Offset(1, 0), .Cells(lngLast , lngCol)).Formula = _
"=VLOOKUP(B& Cstr(i),'DB Items'!$A$1:$B$2824,2,0)"
End If
Next
End With
Set ws = Nothing
End Sub


Anzeige
AW: Formel in bestimme Range einfügen
29.01.2018 18:43:04
Sepp
Hallo Michael,
hast du meinen Code überhaupt probiert?
Ich vermute nicht, sonst hättest du gesehen, dass der Bezug sich automatisch mit der Zeile ändert.
Gruß Sepp

AW: Formel in bestimme Range einfügen
29.01.2018 18:46:06
Michael
Hallo Sepp,
klar habe ich! Ich Weiss auch was du meinst, klar der Bezug ändert sich für die weitere Zellen dieser Range. Wenn ich den Code allerdings nochmal ausführe (also z.B. im nächsten Monat/Woche, wann auch immer ich den wieder benötige, habe ich immer zuerst den Bezug zur Zelle 4)
Anzeige
AW: Formel in bestimme Range einfügen
29.01.2018 18:54:30
Sepp
Hallo Michael,
ok, dass ist klarer!
Willst du wirklich für jede Spalte die erste freie Zeile neu bestimmen?
.SpecialCells(xlCellTypeLastRow) ist nicht immer zuverlässig, kann man die letzte beschriebene Zelle nicht an einer Spate (z.B. A) festmachen?
Gruß Sepp

AW: Formel in bestimme Range einfügen
29.01.2018 21:30:47
Michael
Hallo Sepp,
an sich würde das für den "Start" der Range gehen, für die "bis Zelle" also die Zelle in der die Range endet, wird es allerdings schwierig. In meiner Datei sind links und rechts von der zu befüllenden Spalte Daten die, die usedrange bestimmen und damit auch bis wohin die Range geht in die die Formel eingefügt werden soll.
Ich habe etwas gebastelt und aktuell wuerde es funktionieren die Zeile Variabel zu machen, wenn ich allerdings auch die Spalte Variabel mache steht am Ende z.B. statt "B4" "24" das heist die Spalte wird mir als Zahl und nicht als Buchstabe ausgegeben. Kann man da was machen?
Achja und was macht eigentlich das? Set ws = Nothing?

Sub fuellen2()
Dim rlast2 As Long
Dim iRunner As Long
Dim ws As Worksheet
Dim ir As Range
Dim irow As Integer
Dim isp As Range
Dim ispalte As Integer
'Dim hrange As Range
Set ws = ThisWorkbook.Worksheets("DB Backlog")
With ws
rlast2 = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
For jRunner = 1 To 26
For iRunner = 1 To 26
If .Cells(3, iRunner) = "Description" Then
Set ir = .Cells(rlast2, iRunner).End(xlUp).Offset(1, 0)
irow = ir.Row
If .Cells(3, jRunner) = "Item" Then
Set isp = .Cells(3, jRunner)
ispalte = .Cells(3, jRunner).Column
Debug.Print (ispalte)
' set hrange = (irow,ispalte)
.Range(.Cells(rlast2, iRunner).End(xlUp).Offset(1, 0), .Cells(rlast2, iRunner)).Formula = _
"=VLOOKUP(" & ispalte & irow & " ,'DB Items'!$A$1:$B$2824,2,0)"
End If
End If
Next
Next
End With
Set ws = Nothing
End Sub


Anzeige
AW: Formel in bestimme Range einfügen
29.01.2018 21:39:12
Michael
Ok habs geloest, die Loesung kam mit folgender Idee:
Buchstaben = Split(Cells(1, ispalte).Address, "$")(1)
Danke Sepp, du hast mir gut weitergeholfen!
AW: Formel in bestimme Range einfügen
29.01.2018 21:41:18
Sepp
Hallo Michael,
in so einem Fall, nimmt man besser .FormulaR1C1.
Public Sub fuellen()
Dim lngLast As Long, lngFirst As Long
Dim lngCol As Long
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("DB Backlog")

With ws
  lngLast = .UsedRange.Rows.Count
  For lngCol = 3 To 26
    lngFirst = Application.Max(4, .Cells(.Rows.Count, lngCol).End(xlUp).Row + 1)
    If .Cells(3, lngCol) = "Description" Then
      .Range(.Cells(lngFirst, lngCol), .Cells(lngLast, lngCol)).FormulaR1C1 = _
        "=VLOOKUP(RC2,'DB Items'!R1C1:R2824C2,2,0)"
    End If
  Next
End With

Set ws = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Formel in bestimme Range einfügen
01.02.2018 23:15:10
Michael
Besten Dank!
Achja eine Frage noch: du hattest geschrieben, dass SpecialCells(xlCellTypeLastRow) nicht immer zuverlässig ist. Kannst du mir das bitte kurz erklären?
Beste Grüße
Michael

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige