Как сопоставить два столбца и вернуть значение в третьем в VBA

0

Вопрос

Я должен сопоставить два столбца, в одном из которых есть "all_filenames", а в другом - "part_number", я использовал VLOOKUP для поиска совпадений, и это сработало. Однако проблема в том, что в разделе "все имена файлов "содержится около 2000 данных, а в разделе" номер детали " - только 500. Данные в разделе "номер детали" могут совпадать с несколькими данными в разделе "имена всех файлов", но проблема в том, что они не соответствуют определенному имени. Пример: Столбец A будет содержать имена всех файлов, вот что хранится: XP605_Top.jpg AR131_Front.jpg 28528_765BP_Front.jpg 2543_Front.jpg. В столбце B, который будет "part_number", он хранится как: XP605.jpg AR131.jpg 28528.jpg 2543.jpg. Таким образом, теоретически это можно было бы рассматривать как совпадение, но, поскольку в столбце А отсутствует несколько слов или цифр, оно не будет совпадать. Поэтому моя проблема заключается в создании UDF для решения этой проблемы. Не уверен, что я достаточно хорошо все объяснил. Кто-нибудь может мне помочь? Спасибо.

Public Function WhereIs(rIn As Range, rList As Range) As String
   Dim s1 As String, r As Range
   Dim s2 As String
   WhereIs = ""
   s1 = rIn.Text

   For Each r In rList
      s2 = r.Text
      If InStr(1, s2, s1) > 0 Then
         If WhereIs = "" Then
            WhereIs = r.Address(0, 0)
         Else
            WhereIs = WhereIs & "," & r.Address(0, 0)
         End If
      End If
   Next r

   If WhereI <> "" Then WhereIs = "no match" 
      
End Function

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

Мне нужно, чтобы "значение соответствия" возвращалось в другой столбец с номером детали, и если есть несколько совпадений, мне нужно, чтобы все они были внутри столбца.

excel vba
2021-11-23 23:07:28
1

Лучший ответ

0

Вы можете просто использовать LEFT и FIND для очистки столбцов данных. Если ваши имена файлов указаны в столбце А, то

=LEFT(A1,FIND("_",A1)-1)

Удалит все, вплоть до первого "_". Для вашего списка запчастей

=LEFT(C1,LEN(C1)-4)

это избавит вас от части имени ".jpg" (или вы можете использовать ЗАМЕНУ, как предложено в комментариях). Это сделает функцию ВПР более счастливой

2021-11-24 03:21:24

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................