2016-08-08 2 views
0

Есть ли способ вернуть несколько значений из vlookup? Я хотел бы, чтобы col I в Листе 1 возвращал несколько значений в ячейку, или есть другой способ отображения этого (скорее, не сворачивать)?Vlookup, возвращает несколько значений в ячейку

Лист 1: есть все мои уникальные значения (Col F и возвращающиеся значения в Col I),

Листа 3: Col А имеют повторяющиеся значения строк, которые соответствуют уникальным строкам в Col В, являются уникальными, включая пробелы.

РЕДАКТИРОВАТЬ

Лист 1 или желаемый результат:

enter image description here

Лист 1: Текущий

enter image description here

Лист 3 Текущий:

enter image description here

Текущая формула

=VLOOKUP(F2,Sheet3!A:B,2,FALSE) 

Возвращает основном 0 ', из-за заготовок или нескольких значений, соответствующих уникальных значений.

+0

Можете ли вы нарисовать рис? Невозможно разобраться в вашем описании, что находится в * Sheet3 Column B * и * Sheet1 Column F *. –

+0

Привет, Тим, это помогает? – Jonnyboi

+0

Это помогает в том, что я теперь понимаю, что вам нужно. Кажется, я видел, как это делалось где-то в другом месте на сайте, но я не могу вспомнить, где. Я не думаю, что он использовал 'VLOOKUP', хотя определенно формулу массива. –

ответ

1

Что касается VBA, тогда вам нужно немного изменить код из того, что было в ссылке, которую я вам отправил. Это должно работать:

Option Explicit 
Function vlookupmulti(rngLookup As Variant, rngSource As Range, col As Double) As String 
Dim d As Double, strCell As String 

'Error if range has less columns than col 
If rngSource.Columns.Count < col Then 
    vlookupmulti = CVErr(xlErrNA) 
    Exit Function 
End If 

'Loop through rows in the lookup column 
For d = rngSource.Row To rngSource.Rows.Count 
    If rngLookup = Sheets(rngSource.Parent.Name).Cells(d, rngSource.Column).Value Then 
     strCell = Sheets(rngSource.Parent.Name).Cells(d, rngSource.Column + col - 1).Value 
     If Len(strCell) > 0 Then vlookupmulti = vlookupmulti & strCell & ", " 
    End If 
Next d 

'Remove comma at end 
If Right(vlookupmulti, 2) = ", " Then 
    vlookupmulti = Left(vlookupmulti, Len(vlookupmulti) - 2) 
End If 

'Give error if no results 
If vlookupmulti = "" Then 
    vlookupmulti = CVErr(xlErrNA) 
End If 

End Function 
+0

Спасибо за ваш ответ Тим, как мне форматировать формулу на листе? i.e 'vlookupmulti = (lookup value, ___, __)' – Jonnyboi

+0

То же, что и обычный 'VLOOKUP', но у меня нет последнего аргумента TRUE/FALSE. –

+0

это работает :), есть ли способ заставить его работать быстрее? Кажется, это замораживание моего превосходства. – Jonnyboi

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