2013-04-22 2 views
0

Я новичок в vba. У меня есть формула excel, которую я хочу написать в виде кода vba. Но у меня проблема с этим. Я не знаю, как это сделать. Кто-нибудь может мне помочь? вот формула:Как написать формулу excel в vba?

IFERROR(LOOKUP(2^15,SEARCH(G$6:G$8,B6),G$6:G$8),"")

На самом деле у меня есть несколько ключевых слов в столбце G из sheet2, и я хочу, чтобы искать их в колонке B из sheet1, который содержит текст. Если есть совпадение, я хочу, чтобы этот код vba возвращал сопоставленное ключевое слово в столбце (например, D) на первом листе, если не оставляет соответствующую ячейку пустой.

Я не знаю, как это сделать. Кто-нибудь может мне помочь?

+0

Проводит ли эта функция в рабочем листе? Я не думаю, что вы можете использовать аргумент Range в функции «Поиск». –

+0

Кроме того, приведенная вами формула не совсем соответствует описанию того, что вы думаете по формуле. I.e., нигде в формуле вы не ссылаетесь на Sheet1 или Sheet2 ... –

ответ

1

Я собираюсь принять удар, даже если описание, которое вы предоставляете, похоже, не соответствует функции, которую вы предоставляете.

Сначала я использую функцию IsError с номером Application.Match, чтобы проверить, находится ли lookup_value в диапазоне («B: B») на листе1.

Dim lookup_value as String ' the value you're searching for.' 
Dim found_value as String ' the value to return if a match is found.' 

lookup_value = "edit this value!" '<~~ This is the value you're searching for. Edit as needed.' 

If Not IsError(Application.Match(lookup_value, Sheets("Sheet1").Range("B:B"),False) Then 
    'If the above does not yield an error, then set the found_value based on VLOOKUP.' 
    found_value = Application.WorksheetFunction.VLookup(lookup_value, Sheets("Sheet1").Range("B:D"),2,False) 
Else: 
    'If the MATCH function returns an error, set the found_value = vbNullString. 
    found_value = vbNullString 
End If 

Из этого результата, вы можете просто установить значение ячейки в результате функции, found_value.

ActiveCell.Value = found_value или Range("A1").Value = found_value и т.д.

+0

'VLoopup'? : D Также я заметил, что вы начали использовать комментарии, такие как '<~~';) –

+0

Ах! Опечатка! Мне очень нравится '<~~' :) –

+0

[offtopic] Aha .. Просто я использую это в течение 8 лет ... Вот как я идентифицирую свой код в сети: P [offtopic] –

Смежные вопросы