1

У меня есть лист Excel с двумя листами и двумя столбцами, каждый из которых содержит следующие данные:

данные листа 1:

column1                                         column2
-------                                         -------

/a/b/c/d/good_1_test.mp        
/d/e/f/g/test_2_xyz_pqr.pset
/a/b/g/d/good_1_test2.mp  
/d/e/f/g/test_2_xyz_pqr.pset

данные листа 2:

  column1                                         column2
  -------                                         -------
  good_1                                           orange
  test_2                                           apple

Я хочу, чтобы выходные данные листа 1 выглядели так:

column1                                     column2
-------                                     -------
/a/b/c/d/good_1_test.mp                     orange
/d/e/f/g/test_2_xyz_pqr.pset                apple
/a/b/g/d/good_1_test2.mp                    orange
/d/e/h/g/test_2_xyz_pqr.pset                apple

3 ответа3

2

Для конкретной описанной ситуации попробуйте это в столбце 2 и перетащите вниз (не забудьте изменить ячейки или столбцы при необходимости):

=VLOOKUP(MID$($A2,10,6), Sheet2!A:B, 2, False)
1

Если вы можете использовать пользовательскую функцию. Это адаптировано из функции суперпользователя @Hidden Koala

   Option Compare Text
   Public Function RETURNTEXT(src As Range, crt As Range, col as Integer) As String
   s = Trim(src.Value)
   For Each c In crt
    If InStr(1, s, Trim(c.Value)) Then newstr = WorksheetFunction.VLookup(Trim(c.Value), crt, col, False)
    Next c
    RETURNTEXT = newstr
    End Function

Диапазон, определяющий строки для поиска и возврата, находится в этом примере на Листе 2!$ A $ 1:$ B $ 2

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

Затем введите функцию = RETURNTEXT(A3, Sheet2!$ A $ 1:$ B $ 2,2)

1

Следующее будет работать для любой длины пути, т.е. не только для таких вещей, как /a/b/c/d/test_2_xyz_pqr.pset но и для таких вещей, как /pump/up/the/jam/pump/it/up/test_2_xyz_pqr.pset . Он извлекает первую 6-символьную строку после последней / и ищет ее в таблице Листа 2.

Вставьте это в ячейку B1 и перетащите вниз:

=VLOOKUP(MID(A1,FIND(CHAR(1),SUBSTITUTE(A1,"/",CHAR(1),LEN(A1)
    -LEN(SUBSTITUTE(A1,"/",""))))+1,6), Sheet2!A:B, 2, FALSE)

Это предполагает, что ваши данные "Лист 1 столбец 1" начинаются с A1 , а ваши данные "Лист 2" находятся в столбцах A и B (желательно, чтобы в этих столбцах больше ничего не было).

Кроме того, предполагается, что в справочной таблице находятся только 6-символьные строки (например, test_4). Если вы хотите рассмотреть строки различной длины, то ответ будет намного сложнее.

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