Как избежать ошибки 1004 при попытке назначить IF (INDEX (формула MATCH с использованием VBA - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь вставить некоторые значения и формулы, используя блок WITH.Простые формулы назначаются нормально, но когда он попадает в первую множественную формулу (та, что в .Range ("J2"), он выдает ошибку 1004 приложения или объекта. Я предполагаю, что что-то не так с моимСинтаксис, но я не вижу, что. Я уверен, что я помню что-то из лет назад о необходимости использовать амперсанды для разделения формулы в коде, но не уверен. Заранее спасибо.

Я посмотрелво всех других решениях здесь и на некоторых других сайтах, посвященных этой проблеме, но ни одно из них не кажется достаточно похожим, чтобы ответить на мой вопрос.

With MainPg

             lstrw = .Cells(.Rows.Count, "A").End(xlUp).Row

             '.Range("A1") = "article"
             .Range("B1") = "season"
             .Range("C1") = "bu name"
             .Range("D1") = "dept"
             .Range("E1") = "range name"
             .Range("F1") = "item name"
             .Range("G1") = "stroke"
             .Range("H1") = "colour"
             .Range("I1") = "stroke name"
             .Range("J1") = "newness"
             .Range("K1") = "equivalent stroke/colour"
             .Range("L1") = "pre-lockdown category"
             .Range("M1") = "post-lockdown category"
             .Range("B2").Formula = "='Upload'!A2"
             .Range("C2").Formula = "='Upload'!F2"
             .Range("D2").Formula = "='Upload'!G2"
             .Range("E2").Formula = "='Upload'!K2"
             .Range("F2").Formula = "='Upload'!L2"
             .Range("G2").Formula = "='Upload'!H2"
             .Range("H2").Formula = "='Upload'!J2"
             .Range("I2").Formula = "='Upload'!M2"
             .Range("J2").Formula = "=IF(INDEX('Upload'!C:C," & "MATCH([@article],'Upload'!E:E,0))=43597,""Y"",""N"")"
             .Range("L2").Formula = "=IF(LEN([@[Equivalent Stroke/Colour]])<1,INDEX('Upload'!O:O,MATCH([@article],'Upload'!E:E,0)),INDEX('LastYear'!J:J,MATCH([@[Equivalent Stroke/Colour]],'LastYear'!I:I,0)))"
             .Range("M2").Formula = "=IF([@[pre lockdown category]]=""UNCATEGORISED"",""REGULAR"",[@[pre lockdown category]])"
             .Range("B2:M2").Copy
             .Range("B3:M" & lstrw).PasteSpecial.xlPasteFormulas
             Set rng1 = Range("A1:M" & lstrw)
             Set table1 = .ListObjects.Add(xlSrcRange, rng1, , xlYes)
             table1.TableStyle = "TableStylemedium13"
End With

1 Ответ

0 голосов
/ 18 апреля 2019

посмотрите:

Sub t2est()

    Dim article As String

    article = "Test"

    With ThisWorkbook.Worksheets("Upload")

        .Range("J2").Formula = "=IF(INDEX('Upload'!C:C,MATCH(" & """" & article & """" & ",'Upload'!E:E,0))=43597,""Y"",""N"")"

    End With

End Sub

Загрузить лист:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...