Excel VBA извлекает значения из вложенной функции - PullRequest
0 голосов
/ 21 ноября 2018

Можно ли извлечь результирующее значение вложенной подфункции в VBA?

Например, из этой функции поиска INDEX-MATCH я хотел бы найти значение из результатов издве функции MATCH():

=+INDEX(Sheet3!$B$5:$I$15;MATCH($A6;Sheet3!$A$5:$A$15;0);1)

Я ищу макрос, который может возвращать значение вложенной функции MATCH() в качестве входных данных в коде VBA.То есть я понимаю, что могу извлечь подфункцию MATCH(), и VBA вставит ее как значение.То, что я хочу, это определить значение функции MATCH() и вычислить его в моем скрипте VBA.

1 Ответ

0 голосов
/ 21 ноября 2018

Поскольку я не совсем понимаю то, что вы говорите, я сделаю предположение ... вы хотите использовать сценарий match () отдельно?

dim x as long, y as long, z as string
x = application.match($A" & ActiveCell & ",Sheet3!$A$5:$A$15,0)"
y = x*3 'perform some work using the row number x, knowing match of 1 = row 5 on sheet3
z = application.index(Sheet3!$B$5:$I$15," & y & ")"

Сделал еще один шаг впередгде вы можете использовать указанное арифметическое значение совпадения.


По сути, совпадение предоставляет только номер строки из вашего массива, поэтому я не знаю, какой будет "извлечение", на которое вы ссылаетесь,Если вы хотите извлечь значение, которому вы соответствуете, то вы просто получите то, что (из вашего примера) в A6.


Редактировать: Обновление кода для использования (ранее только что дал концепцию)

dim x as long, y as long, z as string
with sheets("Sheets3")
    x = application.match(ActiveCell.value,.range(.cells(5,"A"),.cells(15,"A")),0)
    y = x*1 'perform some work using the row number x, knowing match of 1 = row 5 on sheet3
    z = application.index(.range(.cells(5,"B"),.cells(15,"B")),y)  'This index was changed to be a SINGLE COLUMN (was B5:I15)
end with
...