Wstawiam formułę Vlookup w zakresie komórek. Formuła ma jednak dynamiczny odniesienie do niego i mam trudności z prawidłowo konstruowaniem.

Oto mój kod:

Sheets("Count").Activate

Dim myValue As Date
myValue = InputBox("Please enter the date you want to update")
Sheets("Count").Range("A1").Value = myValue

Dim ra As Range, raEnd As Range
Dim date1 As Date
date1 = Range("A1")

Set ra = Cells.Find(What:=date1 _
                    , LookIn:=xlFormulas _
                    , LookAt:=xlPart _
                    , SearchOrder:=xlByRows _
                    , SearchDirection:=xlNext _
                    , MatchCase:=False _
                    , SearchFormat:=False)

    If ra Is Nothing Then
    MsgBox ("Date not found, check the format.")

    Else

        Dim Lastrow As Long, rng As Range
        Lastrow = Cells(Rows.Count, "B").End(xlUp).Row
        Set rng = Range(ra.Offset(1, 0), Cells(Lastrow, ra.Column))

        Dim endrow As Long, i As Long, lcol As Integer, startcells As Range
        lcol = Sheets("Count").Range("B1").Value
        endrow = Sheets("Input").Cells(Rows.Count, lcol).End(xlUp).Row
        i = 6
        Set startcells = Sheets("Input").Cells(i, lcol)

        Sheets("Input").Activate

        Dim xrnge As Range, s
        Set xrnge = Range(startcells, Cells(endrow, lcol))
        s = xrnge.Address

        Sheets("Count").Activate
        rng.Formula = "=IFERROR(VLOOKUP($B8,'" & "input" & "'!s,1,0),"""")"

    End If

End Sub

Część, której nie mogę zrobić, to

rng.Formula = "=IFERROR(VLOOKUP($B8,'" & "input" & "'!s,1,0),"""")"

Myślę, że prawie jestem na miejscu, ponieważ w zakresie, w którym chcę wstawić formułę, wygląda to tak:

=IFERROR(VLOOKUP($B20;Input!s;1;0);"") 

Czy mógłbyś mi pomóc, dowiedzieć się, dlaczego pokazuje s, a nie sam zasięg?

1
G_TTI 20 grudzień 2019, 11:11

1 odpowiedź

Najlepsza odpowiedź

Jeśli poprawnie rozumiem, że chcesz s, aby przytrzymać adres zasięgu, a input być referencją arkuszy statycznej. W takim przypadku należy napisać formułę jako tak:

rng.Formula = "=IFERROR(VLOOKUP($B8,input!" & s & ",1,0),"""")"

Powiedzmy, że s przechowuje adres z zakresu S3:S50, a wynik w komórce będzie:

=IFERROR(VLOOKUP($B8,Input!$S$3:$S$50,1,0),"")

Który będzie formułą roboczą zgodnie z oczekiwaniami.

2
Plutian 20 grudzień 2019, 08:41