2016-04-14 21 views
1

ich diese sehr einfache Schleife gemacht haben eine Formel auf alle Zellen in einem Bereich gelten:r1c1 und Excel Formel Ausbeuten Fehler

For Each cell In Range("G5:G500") 
    cell.Offset(0, 7).FormulaR1C1 = "=IF(Len(RC[-4]>0),(RC[-2])/(RC[-4]),"")" 
Next 

Es gibt „anwendungsdefinierte oder objekt definierten Fehler“ für die Linie

cell.Offset(0, 7).FormulaR1C1 = "=IF(Len(RC[-4]>0),(RC[-2])/(RC[-4]),"")" 

Ich kann nicht herausfinden, wo ich hier falsch liege. Ich habe versucht:

  • Verschiedene verschiedene Formate von R1C1 (zB RC [1] oder R [] C [1])
  • unter Verwendung der Formel anstelle von R1C1 aber dann kann ich beziehen sich nicht geometrisch Zellen
  • ich bin mir ziemlich sicher, dass alle meine Klammerung korrekt

ist sehr verwirrt und würde wirklich zu schätzen einen oder anderen Tipp auf diesen Hinweis!

+0

Ich denke, die IF-Formel benötigt eine Endung paranthesis: 'cell.Offset (0, 7) .FormulaR1C1 =" = IF (Len (RC [-4]> 0), (RC [- 2])/(RC [-4]), "") "' – SrinivasR

+1

Siehe http://stackoverflow.com/questions/9024724/how-do-i-put-double-quotes-in-a-string-in -vba. Sie haben Anführungszeichen in einer Zeichenfolge. Also '.FormulaR1C1 =" = IF (Len (RC [-4]> 0), (RC [-2])/(RC [-4]), "" "") "wird funktionieren. –

+0

'.FormulaR1C1 =" = IF (Len (RC [-4])> 0, RC [-2]/RC [-4], "" "") "wird besser zu dem passen, was Sie wahrscheinlich wollen. –

Antwort

0

I‘ Ich hatte das schon mal! Ändern Sie 0 bis 0,001 oder etwas Kleines und wickeln Sie es in eine IFERROR-Formel ein, um Fehler zu verhindern, die dadurch entstehen, dass vba die Formel verwendet! und das sollte den Trick machen

+1

golden! Danke Kumpel – IIJHFII

0

Nicht sicher, wo das Problem ist, aber wenn ich den Code

zu ändern
For Each cell In Range("G5:G500") 
    cell.Offset(0, 7).FormulaR1C1 = "=IF(Len(RC[-4]>0),(RC[-2])/(RC[-4]),N/A)" 
Next 

es funktioniert gut. So wahrscheinlich Ausgabe in if-Anweisung mit "" in der Zelle eingefügt ... (ich werde einen tieferen Blick macht)

edit: ja, Problem mit war Klammer als jemand in Kommentar erwähnt

For Each cell In Range("G5:G500") 
    cell.Offset(0, 7).FormulaR1C1 = "=IF(Len(RC[-4]>0),(RC[-2])/(RC[-4]),)" 
Next