Я хочу преобразовать формулу ВПР, переданную через этот код, в значения для того же диапазона:
Dim DWR, MHR, P, D, A As Worksheet
Set A = Sheets("ALLOC")
Set DWR = Sheets("DWREP")
Set MHR = Sheets("MACH-HRS")
Set P = Sheets("PRODUCTION")
Set D = Sheets("DELAYS")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Dim last_row, last_row1, last_row2 As Long
last_row = MHR.Cells(Rows.Count, 1).End(xlUp).Row
last_row1 = P.Cells(Rows.Count, 1).End(xlUp).Row
last_row2 = D.Cells(Rows.Count, 1).End(xlUp).Row
last_row3 = A.Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
A.Range("AI2").Formula = "=CONCATENATE(A2,B2)"
A.Range("AJ2").Formula = "=D2"
A.Range("AI2:AJ2").AutoFill Destination:=A.Range("AI2:AJ" & last_row3)
P.Range("AI2").Formula = "=CONCATENATE(A2,B2)"
P.Range("AJ2").Formula = "=VLOOKUP(AI2,ALLOC!$AI:$AJ,2,0)"
P.Range("AI2:AJ2").AutoFill Destination:=P.Range("AI2:AJ" & last_row1)
For i = 2 To last_row1
varr = P.Cells(i, 36).Value
P.Cells(i, 36).Value = varr
Next i
Однако я получаю # N / A Values, когда я пробовал итерацию по диапазону с .Value = .Value
. Кроме того, я пробовал использовать для области спецификаций, но он возвращает тот же результат.
P.Activate
P.Range("AJ2:AJ" & last_row1).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
ActiveSheet.Select
Application.CutCopyMode = False
Когда я пытался сделать то же самое вручную, проблем не было. Это ошеломляет. Ваша помощь будет оценена по достоинству.