Я пытаюсь настроить код VBA, который проходит через каждую ячейку в столбце M и возвращает значение столбца L, если ячейка содержит число, и проходит через функцию index/match если столбец L не содержит числа. Тогда, если индекс/match не находит то, что он ищет, он проходит через другой vlookup. У меня возникают проблемы с синтаксисом третьей части этого (vlookup в конце). Я не уверен, что это должен быть другой оператор Else или оператор if или ISerror или что-то другое. Прямо сейчас у меня он настроен как второй, если/else. Мне также интересно, будут ли у меня проблемы из-за того, что функция index/match имеет текст в качестве входного сигнала и должна возвращать число. Любые предложения/советы по этому поводу очень ценятся. Ниже я до сих пор.Excel VBA Index/Match внутри функции IF
Sub Ranking_2()
Dim cell As Range, rng As Range
Set rng = Range("L2:L120")
For Each cell In rng
If WorksheetFunction.IsNumber(cell.Value) Then
cell.Offset(0, 1).Value = cell.Value
Else: cell.Offset(0, 1).Value = WorksheetFunction.Index(ThisWorkbook.Sheets(1).Range("K:K"), WorksheetFunction.Match(cell.Offset(0, 1) & cell.Offset(0, 5), ThisWorkbook.Sheets(1).Range("A:A") & ThisWorkbook.Sheets(1).Range("H:H"), 0))
If:cell.Offset(0,1).Value= WorksheetFunction.IsError(
Else: cell.Offset(0, 1).Value = WorksheetFunction.VLookup(cell.Offset(0, -11), ThisWorkbook.Sheets(2).Range("A1:D136"), 3, 0)
End If
Next
End Sub
Эшли, есть причина, вы используете VBA для вставки рабочего листа функции в клетках, а не только с помощью VBA делать то, что выполняют функции? Это похоже на большую работу для выполнения чего-то простого. Простое выполнение функций на вашем листе или VBA в модуле. Просто любопытно, почему вы так делаете. – Tyeler
Эй, Тайлер, я не уверен, что понимаю, о чем вы спрашиваете. Я новичок в VBA, так что это был единственный способ найти то, что я делаю, добиться того, что я пытаюсь сделать, вполне возможно, что есть более простой способ. Я не делаю этого как формулы в excel, потому что это часть более крупного кода, который будет выполняться много раз, и в VBA это должно быть быстрее. Если есть более простой способ написать это в VBA, можете ли вы рассказать о том, как это сделать? – Ashley
Это все, что мне нужно было знать. Позвольте мне посмотреть, не могу ли я скомпоновать код, чтобы вы могли на правильном пути. : D – Tyeler