#excel #vba #excel-formula
#excel #vba #excel-формула
Вопрос:
У меня есть основная электронная таблица, которая анализирует записи из другой электронной таблицы, в которой количество строк достигает 1,4 миллиона.
Ниже приведены соответствующие фрагменты из кода:
Sub Whyamidoingthis()
Dim USISINLfp As String
Dim ISINL As String
Dim echeck As String
Dim wUSISIN As Workbook
Dim lastrow As Long
Dim Result As Worksheet
Dim i As Long
Set OutShVar = ThisWorkbook.Worksheets("in1")
ISINL = "CONSOLIDATED - Country_Of_Incorp_US_2019-03-01 (Consolidated).xlsx"
USISINLfp = "W:Product PlatformsISIN- CUSIP Country of IncorporationMarch 2019"
Workbooks.Open (USISINLfp amp; ISINL)
Set wUSISIN = Workbooks(ISINL)
With Result
lastrow = .Cells(.Rows.Count, "H").End(xlUp).Row
End With
'US Security 1
For i = 2 To lastrow
With Result
echeck = Trim(.Range("O" amp; i))
If echeck = "" Then
.Range("P" amp; i amp; ":Q" amp; i).Value = "N"
Else
.Range("P" amp; i).Value = "=ifna(vlookup(O" amp; i amp; "," amp; ISINL amp; "First Sheet'!$B:$C,2,false)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
.Range("Q" amp; i).Value = "=ifna(vlookup(O" amp; i amp; "," amp; ISINL amp; "Second Sheet'!$B:$C,2,false)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
'Debug.Print "=ifna(vlookup(O" amp; i amp; "," amp; ISINL amp; "Second Sheet'!$B:$C,2,0)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
End If
'US Security 2
echeck = Trim(.Range("S" amp; i))
If echeck = "" Then
.Range("T" amp; i amp; ":U" amp; i).Value = "N"
Else
.Range("T" amp; i).Value = "=ifna(vlookup(S" amp; i amp; "," amp; ISINL amp; "First Sheet'!$A:$C,3,false)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
.Range("U" amp; i).Value = "=ifna(vlookup(S" amp; i amp; "," amp; ISINL amp; "Second Sheet'!$A:$C,3,false)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
End If
End With
Next I
If Not wUSISIN Is Nothing Then wUSISIN.Close savechanges:=False
End Sub
Код застревает на следующей строке:
.Range("T" amp; i).Value = "=ifna(vlookup(S" amp; i amp; "," amp; ISINL amp; "First Sheet'!$A:$C,3,false)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
Всякий раз, когда найден результат и ошибка является ошибкой, определенной приложением.
Комментарии:
1. Вы пытаетесь установить значение или формулу ? Если последнее, используйте
.Range("P" amp; i).Formula
вместо.Range("P" amp; i).Value
(не то чтобы это было проблемой здесь)2. Формула, изменил ее. Хороший момент. Все еще выдает мне ошибку, хотя
Ответ №1:
Попробуйте эту формулу:
"=ifna(vlookup(O" amp; i amp; ",'[" amp; ISINL amp; "]First Sheet'!$B:$C,2,false)," amp; Chr(34) amp; "N" amp; Chr(34) amp; ")"
Это заключает название книги в квадратные скобки, а сочетание «книга-рабочий лист» — в одинарные кавычки. Смотрите это руководство по использованию ВПР из другой книги.