2016-04-21 4 views
0

Итак, я много читал о обратном vlookup и просматриваю текстовые строки в текстах в excel, но ... У меня есть:
Фирменное наименование | Модель | ГамПоиск текста со строкой в ​​нем

и на другой лист столбец:
Устройства

Что мне нужно, чтобы посмотреть значение из колонки «Device» в «Модели» и показать «Гам» это устройство рядом с ним ,
Проблемы:
1- ВПР или MATCH/INDEX не будет препятствовать мне искать диапазон или показать результат за пределы матрицы таблицы Я ищу в
2- В клетках «Device» (?) У меня есть бренд, номер модели, цвет, емкость устройства и т. Д., Все в одной и той же ячейке и ни в каком конкретном порядке, а «разделение путем делимитации» - месяц для организации; поэтому мне нужно посмотреть, соответствует ли какая-то часть этой ячейки какой-либо части ячейки «Модель» на другом листе.

Мои друзья говорят мне, это должно быть намного проще в SQL, но так как у меня есть опыт minnimal даже в УВА ...

Я даже не знаю, если это может быть сделано, но заранее спасибо в любом случае.

+0

Вообще говоря, это не место для передачи на внешний подряд кода, подобного этому. Вы должны попробовать что-то, опубликовать то, что вы попробовали, а затем конкретную проблему, с которой вы сталкиваетесь с этим подходом.Я так или иначе помогал, но в будущем, пожалуйста, попытайтесь это сделать. – OpiesDad

+0

Извините, код? Я просто использовал формулы и нигде не приближался к решению. Я пробовал = DESREF (Hoja1! $ A $ 1, COINCIDIR (Hoja1! G9, Hoja1! $ C $ 3: $ C $ 227), 3) , но потом я понял, что не имеет значения, что у меня есть модель номер, разделенный на «Hoja1! G9» (мой офис находится на испанском языке), потому что мне все равно понадобятся все номера моделей в формуле. Перед этим постарался матч: = COINCIDIR («*» & Hoja1! G205 & «*», Hoja1! C3: C227,0) который по-прежнему только дает мне адрес и только один номер модели. Я понятия не имею, как это сделать! – Johannes

+0

Функции, которые вы пробовали, и проблема с функцией, которую вы пытались. Еще одна вещь, которую вы можете попробовать, - спросить своих друзей, как это сделать в SQL. Если это так просто для них, вам потребуется очень мало времени, чтобы помочь вам, и в этом процессе вы узнаете некоторый SQL. – OpiesDad

ответ

0

Создайте новый модуль и вставьте следующий User Defined Function (UDF) в модуль:

Function testFunc(myRange As Range, myVal As String) As String 

    Dim myCell As Range 

    For Each myCell In myRange 
     If InStr(1, myVal, myCell.Value, vbTextCompare) <> 0 Then 
      testFunc = myCell.Address 
      Exit Function 
     End If 
    Next myCell 

    testFunc = "NOT FOUND" 

End Function 

Затем в клетке рядом с вашими данными (в моем случае ячейки F3), говоря:

=testFunc($B$3:$B$6,E3) 

где вам нужно заменить «$ B $ 3: $ B $ 6» на столбец, содержащий номера моделей. Замените «E3» на ячейку, которая содержит информацию о вашем устройстве.

Затем в ячейке справа от этого поместите

=IF(F3="NOT FOUND", F3, OFFSET(INDIRECT(F3),0,1)) 

Очевидно заменить «F3» с какой ячейки, что вы поместили предыдущую функцию в.

Это даст вам результат.

Это может быть не такой способ, но это сработает. Это не может быть BEST.

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

Если они находятся на разных листах затем редактировать строку:

testFunc = myCell.Address 

к

testFunc = myCell.Worksheet.Name & "!" & myCell.Address 

ИЛИ

изменить формулу в ячейка до:

=IF(F3="NOT FOUND", F3, OFFSET(INDIRECT("SheetName!" & F3),0,1)) 
+0

Я получаю сообщение «NOT FOUND» в обеих колонках. PS: Столбец «Устройство» находится на другом листе (не знаю, если это важно) – Johannes

+0

Вам нужно поместить диапазон, в котором находятся номера модели, включая имя листа, поэтому он будет выглядеть примерно так: «Sheet4! $ C $ 5 : $ C $ 8 ", где« Sheet4 »заменяется именем листа (вам все равно нужен восклицательный знак), и ячейки заменяются фактическими ячейками. – OpiesDad

+0

Кроме того, убедитесь, что вы привязываете диапазон с помощью $, иначе при его копировании он перемещает диапазон. – OpiesDad

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