Ошибка в функции Index-Match внутри al oop VBA - PullRequest
0 голосов
/ 30 апреля 2020

Мое совпадение индекса l oop отлично работало в ограниченном образце, но когда я расширил его до целого образца, он упал. Проблема в том, что в какой-то момент он находит значение, которое не может быть найдено в диапазоне строк. Он перестает писать именно в этой камере. Я пытался использовать isError, но он ничего не изменил, и код останавливается в той же ячейке.

Можете ли вы мне помочь, пожалуйста?!

Спасибо!

Set inputs = Sheets("Inputs")
Set raw = Sheets("Raw")
Set interm = Sheets("Rel_Raw")
Set finaldata = Sheets("Data")



For i = cols + 1 To cols_2 Step 1
    For j = 2 To entries_r Step 1

        If Not IsError(finaldata.Cells(j, i).Value = Application.Index(interm.Range(interm.Cells(1, 1), interm.Cells(dim_r, dim_c)), IsError(Application.Match(finaldata.Cells(j, 1).Value, interm.Columns(1), 0)), IsError(Application.Match(finaldata.Cells(1, i).Value, interm.Rows(1), 0)))) Then
            finaldata.Cells(j, i).Value = Application.Index(interm.Range(interm.Cells(1, 1), interm.Cells(dim_r, dim_c)), Application.Match(finaldata.Cells(j, 1).Value, interm.Columns(1), 0), Application.Match(finaldata.Cells(1, i).Value, interm.Rows(1), 0))
        Else
            finaldata.Cells(j, i).Value = 0
        End If

    Next j
Next i

1 Ответ

0 голосов
/ 30 апреля 2020

Ваш код может выиграть от разделения частей Application.Match на их собственные строки. Сохраните результат Application.Match в Variant, тогда может быть проще просто использовать IsNumeric, чтобы проверить, являются ли они числом, и если это так, переходите к использованию их внутри Application.Index.

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