У меня есть 2 листа, один со списком деталей (sku) и всеми транспортными средствами, на которые эта часть поместится (подгонка), разделенными «^^», это выглядит так:

sku | fitment


 1 |car1 ^^ car2 ^^ car3
 2 |car2 ^^ car3
 3 |car1
 4 |car1 ^^ car 2
 5 |car3

На моем втором листе у меня есть список автомобилей, который выглядит следующим образом:

fitment

car1
car2
car3

Для каждого автомобиля на листе два, я хотел бы найти пример на листе один для этого конкретного текста и вернуть sku, если он найден (разделенный разделителем). Так это будет выглядеть так:

fitment |skus
-------------
car1|1,3,4
car2|1,2,4
car3|1,2,5

2 ответа2

1

Попробуйте эту небольшую пользовательскую функцию:

Public Function CarFinder(clist As Range, carID As String)
   Dim cell As Range
   CarFinder = ""

   For Each cell In clist
      If InStr(1, cell, carID) > 0 Then
         If CarFinder = "" Then
            CarFinder = cell.Offset(0, -1).Value
         Else
            CarFinder = CarFinder & "," & cell.Offset(0, -1).Value
         End If
      End If
   Next cell
End Function

Пример его использования:

Пользовательские функции (UDF) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

= CarFinder($ B $ 1:$ B $ 100, Z9)

Чтобы узнать больше о макросах в целом, смотрите:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

а также

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

а подробности о UDF смотрите в:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Макросы должны быть включены, чтобы это работало!

0

UDF Gary's Student более точно соответствует тому, что вы пытаетесь сделать, но вот версия, которая работает без VBA. Подвох в том, что вам нужны отдельные столбцы для каждого SKU. Организуйте свою работу следующим образом: автомобили слева и SKU сверху:

        1    2    3    4    5
car1
car2
car3

Затем, предполагая, что car1 находится в ячейке D2, и, следовательно, 1 находится в ячейке E1, используйте эту формулу в ячейке E2:

=NOT(ISERROR(SEARCH($D2,INDEX([Fitments],MATCH(E$1,[SKUs],0)))))

Затем вы можете заполнить формулу вниз и поперек, чтобы заполнить оставшиеся данные. Возвращает TRUE или FALSE .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .