Сопоставить строку замены в Excel - PullRequest
1 голос
/ 08 июня 2011

У меня есть лист Excel с 2 столбцами: абсолютный путь и относительный путь.
Теперь скажите, что данные представлены в следующем формате:

 absolute path           relative path
 -------------           -------------
 /a/b/c/d/abc.dat                
 /x/y/z/def.dat
 /p/q/r/s/t/test.dat
 /a/b/c/d/abc.dat                
 /x/y/z/def.dat

Выходные данные должны быть

 absolute path           relative path
 -------------           -------------
 /a/b/c/d/abc.dat        ABCD_PATH       
 /x/y/z/def.dat          XYZ_PATH   
 /p/q/r/s/t/test.dat     PQRST_PATH
 /a/b/c/d/abc.dat        ABCD_PATH       
 /x/y/z/def.dat          XYZ_PATH
  • Если в 1-м столбце содержится /a/b/c/d, то во 2-м столбце следует поместить некоторую уникальную строку, которую я приведу здесь как ABCD_PATH.

  • Если1-й столбец содержит /x/y/z/, затем во 2-й столбец следует поместить некоторую уникальную строку, которую я привожу здесь как XYZ_PATH.

  • Если в 1-м столбце содержится /p/q/r/s/t/, тово 2-м столбце он должен поместить некоторую уникальную строку, которую я привожу здесь как PQRST_PATH.

Ответы [ 2 ]

3 голосов
/ 08 июня 2011
  1. Создайте таблицу сопоставления на листе в файле Excel (например, sheet2):

     ______________________________________
    |   |    A       |      B
    |___|____________|_____________________
    | 1 | Absolute   |   ReplaceBy
    |   |------------|---------------------
    | 2 |/a/b/c/d/   |   ABCD_PATH
    | 3 |/x/y/z/     |   XYZ_PATH
    | 4 |/p/q/r/s/t/ |   PQRST_PATH
    |
    |_________          ___________________
    \ sheet1 /\ sheet2 /\ sheet3 /
     \______/  \______/  \______/
    
  2. Вернуться на лист1:

     ___________________________________________________
    |   |    A               |      B
    |___|____________________|__________________________
    | 1 | absolute path      |   relative path
    |   |--------------------|--------------------------
    | 2 |/a/b/c/d/abc.dat    |   =VLOOKUP(LEFT(A2...    --(hit)-> Ctrl+Shift+Enter
    | 3 |/x/y/z/def.dat      |           |
    | 4 |/p/q/r/s/t/test.dat |           V (copy cell)
    |
    |         __________________________________________
    \ sheet1 /\ sheet2 /\ sheet3 /
     \______/  \______/  \______/
    
  3. Поместите в ячейку relative path B2 эту формулу:

    =VLOOKUP(LEFT(A2,
                  MAX((MID(A2, ROW($1:$90), 1)="/")*ROW($1:$90))
                 ),
             Sheet2!$A$2:$B$4,
             2,
             FALSE)
    
  4. Hit Ctrl + Shift + Enter : это формула массива, также известная как CSE формула .

  5. Скопируйте B2 ячейку (не формула) и вставьте ее в оставшиеся ячейки в столбце B.

0 голосов
/ 08 июня 2011

Как насчет

=TRIM(SUBSTITUTE(UPPER(LEFT(A1,FIND("~",SUBSTITUTE(A1,"/","~",LEN(A1)-LEN(SUBSTITUTE(A1,"/","")))))),"/",""))&"_PATH" для пути

и =RIGHT(A1,LEN(A1)-FIND("~",SUBSTITUTE(A1,"/","~",LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))))) для файла и расширения

...