Разделите указанный конец строки c на столбцы - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть длинный список путей к файлам в столбце A. Я хотел бы вырезать как имя файла, так и 2 ближайших пути к файлам в 3 отдельных столбца (B, C, D). Я хотел бы оставить то, что осталось от пути к файлу в столбце А.

Глубина отличается в разных строках. Вот почему он не работает со стандартным разбиением строк на столбцы на основе разделителя.

Вот пример данных:

\\folder1\Folder2\Folder3\Folder4\Folder5\Folder6\Filename.xxx
\\folder1\Folder2\Folder3\Folder4\Folder5\Filename.xxx
\\folder1\Folder2\Folder3\Filename.xxx

Есть ли у вас какие-либо выводы о том, как я можно построить это в VBA?

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Попробуйте, пожалуйста:

Я решил использовать столбцы B, C, D, E, и вы можете удалить столбец A: A, если все идет гладко. Или очевидно, как код может быть адаптирован для выполнения именно того, что вы запрашивали ...

Sub testStrPath()
  Dim strAr As Variant, sh As Worksheet, i As Long, lastRow As Long
  Dim strPath As String
  Set sh = ActiveSheet 'use here your worksheet
  strAr = Split(strPath, "\")
  lastRow = sh.Range("A" & sh.Rows.count).End(xlUp).Row

   For i = 1 To lastRow
    strPath = sh.Range("A" & i).Value
    strAr = Split(strPath, "\")
    If UBound(strAr) > 4 Then
        sh.Range("C" & i).Value = strAr(UBound(strAr) - 2)
        sh.Range("D" & i).Value = strAr(UBound(strAr) - 1)
        sh.Range("E" & i).Value = strAr(UBound(strAr))
        sh.Range("B" & i).Value = left(strPath, InStr(strPath, "\" & sh.Range("C" & i).Value) - 1)
    End If
   Next i
End Sub
0 голосов
/ 05 февраля 2020

Вы также можете сделать это по следующей формуле.

Предполагая, что ваши данные начинаются в ячейке A2 в ячейке B2, напишите следующую формулу.

=TRIM(MID(SUBSTITUTE($A2,"\",REPT(" ",99)),(LEN($A2)-LEN(SUBSTITUTE($A2,"\",""))-COLUMNS(B$2:$D$2)+1)*99,99))

Копирование вниз и поперек.

Лог c для формулы ядра довольно хорошо объясняется здесь Риком Ротштейном

http://www.excelfox.com/forum/showthread.php/333-Get-Field-from-Delimited-Text-String?s=0b13a52917f7e865e277885b0abfaa6f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...