2016-06-15 8 views
2

式でIF(And()構造体を使用しようとしています。私は式のValue_if_True部分の文字列変数を作成するループを作成しましたこれを行うには、しかし、式はセルを実行するときには、代わりに私は、変数の宣言変数Value_If_Trueの文字列変数がワークシート内の行範囲を返します

v = 1 
cs = 71 
ce = 87 
For c = cs To ce Step 2 
    r = "R" & v 
    drop.Range(Cells(8, c), Cells(LR, c)).FormulaR1C1 = "=IF(AND(RC3>=RC[-18],RC3<=RC[-17])," & r & ","""")" 
    v = v + 1 
Next 

の内容の範囲を示していますサブポロキュレジーの頂点(rはストリングです)。これは、セルが、私はマクロを実行した後のように見えるものです:

=IF(AND($C8>=BA8,$C8<=BB8),8:8,"") 

8:8は "R1" でなければなりません。

+0

「R1」は1:1に変更され、「R8」は8:8になります。 vを繰り返し実行するたびに、行出力が増加します。あなたは「R1」という出力として何を望んでいますか?行ではなく、実際の文字列ですか? –

+0

r.valueはどうですか?それでも、ここでは間接的なものを使う必要があると思います。原則として、変数の値はR1であり、セルの値ではありません。数式の中で "&.Range(r)&"を試してみることもできます。 – Lowpar

答えて

1

リテラル文字列"R1"がIfの結果として欲しいと推測していますが、引用符を付けないと、xlR1C1の範囲参照として参照されています。

drop.Range(Cells(8, c), Cells(LR, c)).FormulaR1C1 = _ 
    "=IF(AND(RC3>=RC[-18], RC3<=RC[-17]), """ & r & """, TEXT(,))" 

TEXT(,)""""を記述することなく、""を言うためだけの簡単な方法です。

関連する問題