nochmal: FormulaR1C1 zu Formula oder FormulaLocal
#1
Hallo,

nochmal den ersten (für mich noch offenen) Teil diesesThemas:
altes Thema

Wenn ich eine Formel statt FormulaR1C1 nun Formula oder FormulaLocal formulieren will, wie würde die Makro-Code-Zeile dann lauten müssen?
z.B. für:
=WENN(G3="A";B2;"")
Range("B" & i).FormulaR1C1 = "=IF(RC[5]=""A"",R[-1]C,"""")"
Range("B" & i).FormulaLocal = ?
Range("B" & i).Formula = ?
Sub FormelEinfügen()
  '
  ' 31.01.2017 - RaB
  '
  Dim loZeile As Long
  Dim i As Long
  '
  Application.ScreenUpdating = False
  loZeile = ActiveCell.Row
     '=WENN(G3="A";B2;"")
 
  For i = 3 To 12
     'so geht´s
     'Range("B" & i).FormulaR1C1 = "=IF(RC[5]=""A"",R[-1]C,"""")"
     
     'wie geht das mit diesen?
     'Range("B" & i).FormulaLocal = "?"
     'Range("B" & i1).Formula = "?"
     
     'so geht´s nicht!
'      Range("B" & i).Formula = "=if(range(""G"" & i)=""A"";range(""B"" & i-1);"""")"
 
  Next i
 
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
 
End Sub
Ich habe auch bei dem Link von Steffl (Peter Haserodt hier) nachgeschaut, aber das hat mir leider nicht geholfen. Ich konnte das trotzdem nicht umsetzen.


Es gibt doch die Möglichkeit in einem Excel-Blatt durch Eingabe in eine Zelle automatisch zwischen R1C1 und lokal umformulieren zu lassen, mit allen "", wer sagt mir, wie das geht?
Antworten Top
#2
Hallo Ralf,

versuche es mal so
Code:
Range("B" & i).Formula = "=if(G" & i & "=""A"",B" & i - 1 & ","""")"
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Hi Stefan,

(31.01.2017, 13:34)Steffl schrieb: versuche es mal so
Code:
Range("B" & i).Formula = "=if(G" & i & "=""A"",B" & i - 1 & ","""")"

Ich war in der Zwischenzeit schon fast dran!

Nun habe ich eine Lösung für alle 3 Versionen:
Sub FormelEinfügen()
  '
  ' 31.01.2017 - RaB
  '
  Dim loZeile As Long
  Dim i As Long
  '
  Application.ScreenUpdating = False
 
  For i = 3 To 12
     '=WENN(G3="A";B2;"")
     'so geht´s; die gewünschte Lösung wahlweise verwenden!
     Range("B" & i).FormulaR1C1 = "=IF(RC[5]=""A"",R[-1]C,"""")"
     Range("B" & i).FormulaLocal = "=wenn(G" & i & "= ""A"" ;B" & i - 1 & ";"""")"
     Range("B" & i).Formula = "=if(G" & i & "=""A"",B" & i - 1 & ","""")"
     
  Next i
 
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
 
End Sub

Jetzt sehe ich nur noch das offen:
Ich glaube, ich habe irgendwo von der Möglichkeit gelesen, in einem Excel-Blatt durch Eingabe der Formel in eine Zelle automatisch zwischen R1C1 und lokal umformulieren zu lassen, mit allen "".
Wie geht das?
Antworten Top
#4
Hallo Ralf,
(31.01.2017, 14:31)Rabe schrieb: Jetzt sehe ich nur noch das offen:
Ich glaube, ich habe irgendwo von der Möglichkeit gelesen, in einem Excel-Blatt durch Eingabe der Formel in eine Zelle automatisch zwischen R1C1 und lokal umformulieren zu lassen, mit allen "".
Wie geht das?

Meinst Du bei Optionen - Formeln die Z1S1-Bezugsart?

Code:
'
   Application.ReferenceStyle = xlA1   'A1-Bezugsart
   Application.ReferenceStyle = xlR1C1 'Z1S1-Bezugsart
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Hallo Ralf,

Rechtsklick auf den Tabellenreiter dann einfügen und Internationale makrovorlage nehmen.
Aus dem bisherigen Blatt Formel dorthin kopieren.

Eine witere Möglichkeit ist den Direktfenster in der VBA Umgebung zu nutzen dort z. B. so eingeben.

?activecell.FormulaR1C1

und mit Enter abschließen.

Nur die Umschreibumg im Code mit den Umschließenden Gänsefüßchen musst Du zu Fuß erledigen.

Bei komplizierten Formeln mache ich es so, dass ich die Formel ohne das "=" reinschreiben lasse. Dann steht es als Text in der Zelle.
Dann setze ich das "=" manuell rein, und sehe in der Formelauswertung was nicht stimmt bzw. Excel sagt es mir.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • Rabe
Antworten Top
#6
Hi Atilla,

(31.01.2017, 15:44)atilla schrieb: Rechtsklick auf den Tabellenreiter dann einfügen und Internationale makrovorlage nehmen.
Aus dem bisherigen Blatt Formel dorthin kopieren.

ok, das war es vermutlich, danke!

Jetzt muß ich es mal Testen.
Antworten Top
#7
Hi Ralf,

es gibt noch die Application.ConvertFormula-Methode. Hier das Beispiel aus der Hilfe:
Sub Konvertieren()
 'In diesem Beispiel wird die Formel SUM mit Z1S1-Bezügen
 'in eine gleichbedeutende Formel mit A1-Bezügen umgewandelt.
 'Anschließend wird das Ergebnis angezeigt.

 Dim inputFormula As String
 inputFormula = "=SUM(R10C2:R15C2)"
 MsgBox Application.ConvertFormula( _
   Formula:=inputFormula, _
   fromReferenceStyle:=xlR1C1, _
   toReferenceStyle:=xlA1)
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Rabe
Antworten Top
#8
Hallo Atilla und Uwe,

danke, funktioniert beides.

Jetzt hätte ich bei Uwes Code noch gerne die Möglichkeit, die inputFormula über eine Zelle ein- und das Ergebnis in eine Zelle auszugeben.

...
Mal damit rumspielen.
Antworten Top
#9
Hi Ralf,

(01.02.2017, 10:26)Rabe schrieb: Jetzt hätte ich bei Uwes Code noch gerne die Möglichkeit, die inputFormula über eine Zelle ein- und das Ergebnis in eine Zelle auszugeben.

schau dazu mal hier: http://www.online-excel.de/fom/fo_read.php?f=1&bzh=-1&h=27368&ao=1

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste