公式通过此VBA代码给出excel中的值,但下面公式中的范围是修复:
Private Sub Formula update()
Dim rng As Range
Dim rng1 As Range
Set rng = Range("B1").End(xlDown)
rng.Offset(1, 0).Formula = "=TEXT(RIGHT(**B9**,9)+3,""DDMMMYYYY"")&"" - ""&TEXT(RIGHT(*B9*,9)+7,""DDMMMYYYY"")"
rng.Offset(1, -1).Formula = "=CONCATENATE(""WK-"",IF((WEEKNUM(LEFT(**B10**,9),2)-40)<=0,(WEEKNUM(LEFT(**B10**,9),2)-40)+53,WEEKNUM(LEFT(**B10**,9),2)-40))"
End Sub
但是在下面提到的代码中,我需要公式下的动态范围。
有人可以解决它。
Private Sub FormulaValue_paste()
Dim rng As Range
Dim rng1 As Range
Set rng = Range("B1").End(xlDown)
rng.Offset(1, 0).Formula = "=TEXT(RIGHT(rng,9)+3,""DDMMMYYYY"")&"" - ""&TEXT(RIGHT(rng,9)+7,""DDMMMYYYY"")"
Set rng1 = rng.Offset(1, 0)
rng.Offset(1, -1).Formula = "=CONCATENATE(""WK-"",IF((WEEKNUM(LEFT(rng1,9),2)-40)<=0,(WEEKNUM(LEFT(rng1,9),2)-40)+53,WEEKNUM(LEFT(rng1,9),2)-40))"
End Sub
提前感谢您的支持。
答案 0 :(得分:0)
我猜,但如果你的意思是你想让公式引用rng1,也许就是这个。使用范围的Address属性并将其从引号中删除。
rng.Offset(1, -1).Formula = "=CONCATENATE(""WK-"",IF((WEEKNUM(LEFT(" & rng1.address & ",9),2)-40)<=0,(WEEKNUM(LEFT(" & rng1.address & ",9),2)-40)+53,WEEKNUM(LEFT(" & rng1.address & ",9),2)-40))"