Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formel ändern

Formel ändern
Claudia
Hallo zusammen,
ich arbeite sehr viel mit definierten Spaltennamen. Jetzt würde ich gerne folgende Formel so ändern, dass ich hier nur mit den definierten Namen arbeiten kann.
Range("Briefanrede").Cells(2).Select
ActiveCell.FormulaR1C1 = _
"=IF(RC[-25]="""","""",IF(RC[-25]=""Herr"",""Sehr geehrter Herr"",IF(RC[-25]=""Frau"",""Sehr geehrte Frau"",""prüfen"")))"
Selection.AutoFill Destination:=Range("aa2:aa10000"), Type:=xlFillDefault
Range("a1").Select
Bedeutet also, dass der If-Teil den Bezug auf den Spaltennamen "Anrede" bekommen muss. Und die Selcetion.AutoFil... muss den Namen Briefanrede bekommen.
Geht sowas? Wenn ja, wie?
Vielen Dank!
LG
Claudia

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formel ändern
29.11.2009 16:46:41
fcs
Hallo Claudia,
funktioniert etwa so.
Ggf. solltest du aber auch die 10000 für die Zeilenzahl noch dynamisch bestimmen, um das Blatt nicht unnötig mit Formeln zu überfrachten.
Entsprechende Anweisung:
Zeile = Cells(Rows.Count, Spalte).End(xlUp).Row
Als Spaltennummer hier dann zum Beispiel die Spalte mit den Namen verwenden.
Gruß
Franz
Sub aatest()
Dim Spalte As Long
Spalte = Range("Anrede").Column
Range("Briefanrede").Cells(2).FormulaR1C1 = _
"=IF(RC" & Spalte & "="""","""",IF(RC" _
& Spalte & "=""Herr"",""Sehr geehrter Herr"",IF(RC" & Spalte _
& "=""Frau"",""Sehr geehrte Frau"",""prüfen"")))"
Spalte = Range("Briefanrede").Column
Range("Briefanrede").Cells(2).AutoFill Destination:=Range(Cells(2, Spalte), _
Cells(10000, Spalte)), Type:=xlFillDefault
End Sub

Anzeige
AW: Formel ändern
29.11.2009 16:59:47
Claudia
Hallo Franz,
vielen Dank für die Hilfe. Muss das aber in Ruhe noch verstehen, sieht doch sehr kompliziert aus. :-)
Kann ich Dich nochmals was fragen? Wie müsste ich das hier machen? Auch diese Spalten haben alle Namen.
Danke schön!
LG
Claudia
Dim bereich1 As Range
Dim bereich2 As Range
Dim Bereich3 As Range
Dim Gesamt As Range
Dim Zelle As Range
Set bereich1 = ActiveSheet.Range("AG:AN")
Set bereich2 = ActiveSheet.Range("AR:AS")
Set Bereich3 = ActiveSheet.Range("Y:Y")
Set Gesamt = Union(bereich1, bereich2, Bereich3)
For Each Zelle In Gesamt
If Cells(Zelle.Row, 1) "" Then
If IsNumeric(Zelle.Value) = True And _
Zelle.HasFormula = False Then
Zelle.Value = Zelle.Value * 1
Selection.NumberFormat = "#,##0.00 _€"
End If
End If
Next Zelle
Range("a1").Select
End Sub
Anzeige
AW: Formel ändern
29.11.2009 17:30:05
fcs
Hallo Claude,
was heißt hier kompliziert? Das liegt wohl mehr daran, dass deine Formel kompliziert ist.
Irgendwie muss man Excel ja mitteilen, das es statt "[-25]" den Inhalte einer Variablen in den Formeltext einbauen soll. Und das funktioniert nun einmal so, dass man die festen Formeltextteile und die Variablen verkettet.
Dein Neues Problem. Etwa so, dabei muss dann "SpalteXYZ" durch die entsprechenden Bereichsnamen der Spalten ersetzt werden.
  Dim Spalte1 As Long, Spalte2 As Long, Zeile As Long
With ActiveSheet
Zeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
Spalte1 = .Range("SpalteAG").Column
Spalte2 = .Range("SpalteAN").Column
Set bereich1 = .Range(.Cells(1, Spalte1), .Cells(Zeile, Spalte2))
Spalte1 = .Range("SpalteAR").Column
Spalte2 = .Range("SpalteAS").Column
Set bereich2 = .Range(.Cells(1, Spalte1), .Cells(Zeile, Spalte2))
Spalte1 = .Range("SpalteY").Column
Set Bereich3 = .Range(.Cells(1, Spalte1), .Cells(Zeile, Spalte1))
End With
Set Gesamt = Union(bereich1, bereich2, Bereich3)

Gruß
Franz
Anzeige
Franz
29.11.2009 17:36:15
Claudia
Hallo Franz,
das war auch nicht gegen Dich gerichtet. Ich finde jede aufgezezeichnete Formel schwer. Ich versuche gerade Deine erste Formel auf diese Formel anzugleichen, aber ich scheitere. Excel sagt mir, dass hier ein Anweisungsende fehlt.
Ich möchte einfach nur sagen: Wenn Zelle in Spalte Kunde leer, dann Zelle in Kunde2 auch leer. Wenn aber nicht leer, dann nimmt Zellwert aus Spalte Kunde.
Snief.... :-(
Dim spalte As Long
spalte = Range("Kunde").Column
Range("Kunde2").Cells(2).FormulaR1C1 = "=IF(RC" & spalte & "="""","""",(RC" & spalte)))"
spalte = Range("Kunde2").Column
Range("Kunde2").Cells(2).AutoFill Destination:=Range(Cells(2, spalte), _
Cells(20000, spalte)), Type:=xlFillDefault
Anzeige
AW: Claudia
29.11.2009 18:13:14
fcs
Hallöchen nochmal,
da hast du hinter dem letzten Spalte vergessen: & "
  Range("Kunde2").Cells(2).FormulaR1C1 = "=IF(RC" & spalte & "="""","""",(RC" & spalte & ")))"
Dadurch war die Anweisung in der Syntax nicht korrekt.
Gruß
Franz
Laufzeitfehler...snief
29.11.2009 20:24:57
Claudia
Hallo auch noch einmal,
ich bin irgednwie hier für nicht geschaffen. So sieht die ganze Formal aus.
Sub f()
Dim spalte As Long
spalte = Range("Kunde").Column
Range("Kunde2").Cells(2).FormulaR1C1 = "=IF(RC" & spalte & "="""","""",(RC" & spalte & ")))"
spalte = Range("Kunde2").Column
Range("Kunde2").Cells(2).AutoFill Destination:=Range(Cells(2, spalte), _
Cells(20000, spalte)), Type:=xlFillDefault
End Sub

Jetzt bekomme ich den Laufzeitfehler 1004 mit folgendem Text:
Anwendungs- oder objektdefinierter Fehler
Was mache ich nur falsch?
LG
Claudia
Anzeige
AW: Das sind zuviele Klammern.
29.11.2009 20:56:31
Daniel
im Formelstring:
"=IF(RC" & spalte & "="""","""",(RC" & spalte & ")))"
Gruß Daniel
So einfach. Danke!
29.11.2009 21:53:28
Claudia

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige