Q:

Variable inside range method

I am new and eager to learn the why behind the how, I have some C experience. I want this line in VBA to apply a formula in a column C, for the same number of rows that contain data as are found in another Column A
Why does top method fail but bottom method work?
What is the Range Method expecting inside the parenthesis? ( only range or strings ergo I should make Lrow a string?)
How could I implement this using Lrow as a range object?
Any general rules or tips on "what VBA is thinking when it sees something" ( like in C & = address of, * = value of is much appreciated )
Dim Lrow As Integer, twentyDayAVG As Double
' Set Lrow = Range("A3").End(xlDown)
Lrow = Range("C3").End(xlDown).Row
twentyDayAVG = Evaluate("=AVERAGE($A$2:$A$21)")

Range("C2:C" +Lrow+").Formula = "=A2-" & twentyDayAVG

'This one works fine 
Range("C2:C" & Range("A3").End(xlDown).Row).Formula ="=A2-" & twentyDayAVG 

A:

The Range() method expects either a string argument containing an A1 style range address, or two range objects - the top left cell and bottom right cell of a rectangular range.
You can concatenate strings and variables to create an A1 style address string. Note that the concatenation operator in VBA is the ampersand (&).
In VBA the equal sign (=) is used both to test for equivalence (If A = B Then) and as an assignment operator (MyVar = 5).
To test for inequality use <>.

