Преобразование формулы массива с функцией SMALL в функцию оценки - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть следующий код для формулы массива с функцией SMALL, которая работает и записывает результат в ячейку:

Dim strColLetter As String
Dim strActiveColLetter As String
Dim strColLetter As String
Dim strActiveColLetter As String
Dim strBulkNum As String
Dim intLastCol As Long
Dim i As Long
Dim j As Long
Dim intLastRow As Long
Dim rngProntoItemDataBulkNum As Range
Dim rngProntoItemDataRefNum As Range
Dim wksh As Worksheet
Dim wbk As Workbook

Set wbk = Workbooks("Master - Pronto_Item_Data.xlsx")
Set wksh = Workbooks("Master - Pronto_Item_Data.xlsx").Sheets("Pronto_Data")
intLastRow = ThisWorkbook.Sheets("WorkFile4").Cells(Rows.Count, 1).End(xlUp).Row
intLastCol = ThisWorkbook.Sheets("WorkFile4").Cells(1, Columns.Count).End(xlToLeft).Column
strColLetter = Split(Cells(1, intLastCol + 2).Address, "$")(1)
Set rngProntoItemDataBulkNum = wksh.Range("ProntoItemDataBulkNum")
Set rngProntoItemDataRefNum = wksh.Range("ProntoItemDataRefNum")
For j = 3 To intLastRow - 1 'looping through the rows
   For i = 1 To 5 'looping across five columns
    strActiveColLetter = Split(Cells(1, intLastCol + 1 + i).Address, "$")(1)
    ThisWorkbook.Sheets("WorkFile4").Cells(j, intLastCol + 1 + i).FormulaArray = "=IFERROR(INDEX('[Master - Pronto_Item_Data.xlsx]Pronto_Data'!" & rngProntoItemDataBulkNum.Address(False, True) & ", SMALL(IF('[Master - Pronto_Item_Data.xlsx]Pronto_Data'!" & rngProntoItemDataRefNum.Address(False, True) & "=$A" & j & ",ROW('[Master - Pronto_Item_Data.xlsx]Pronto_Data'!" & rngProntoItemDataRefNum.Address(False, True) & ")),COLUMNS($" & strColLetter & "$" & j & ":" & strActiveColLetter & j & "))),"""")"
    strBulkNum = Evaluate("=IFERROR(INDEX('[Master - Pronto_Item_Data.xlsx]Pronto_Data'!$A:$A, SMALL(IF('[Master - Pronto_Item_Data.xlsx]Pronto_Data'!$N:$N=$A" & j & ",ROW('[Master - Pronto_Item_Data.xlsx]Pronto_Data'!$N:$N)),COLUMNS($" & strColLetter &  "$" & j & ":" & strActiveColLetter & j & "))),"""")")
   Next i
Next j

Я пытаюсь преобразовать этот код формулы массива в функцию EVALUATE и сохранить его в переменной strBulkNum.,В настоящее время это дает ошибку.Я был бы признателен за любую помощь в написании выражения EVALUATE для приведенной выше формулы массива для каждого экземпляра i и j.Заранее спасибо.

...