
У меня есть временные метки в виде CSV-файла, где каждая строка выглядит так:
TT_TU_MN009,"5009","200001010000","-1.8","3","4"
TT_TU_MN009,"5009","200001010200","-1.7","10","1"
TT_TU_MN009,"5009","200001011400","1","10","1"
...
Моя цель — извлечь вторую, третью и четвертую позицию из этой строки (без двойных кавычек) в отдельный столбец:
- 5009
- 200001010000
- -1.8
Мне удалось добиться этого для первой колонки.
=LEFT(A2;SEARCH(",";A2)-1)
но не знаю как это сделать для двух других позиций. Это возможно без VBA?
заранее спасибо
А
решение1
Я хотел бы предложить два различных метода извлечения n-го текста из текстовой строки в ячейке.
Метод 1:
Формула в ячейке
J16
:=TRIM(MID(SUBSTITUTE("""" & $J$13& REPT(" ",6),"""",REPT(CHAR(32),255)),2*255,255))
Примечание.
2*255
определяет положение текста, вJ13
,5009
является 2-м словом/текстом.Для
20000101000
позиции это 4-я, так как формула,
перед ней считается 3-й, поэтому для формулы в ячейкеJ17
замените2*255
на4*255
и на6*255
для-1.8
формулы вJ18
.
Метод 2:
Он содержит макрос VBA, является UDF (пользовательской функцией).
- Нажмите либоАльт+Ф11илирНажмите наСнажмите TAB и из всплывающего меню нажмитеПосмотреть кодчтобы получить редактор VB.
- Скопия &пСохраните этот код как Модуль.
Function FindWord(Source As String, Position As Integer)
Dim arr() As String
arr = VBA.Split(Source, ",")
xCount = UBound(arr)
If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then
FindWord = ""
Else
FindWord = arr(Position - 1)
End If
End Function
- Формула в ячейке
J3
:=SUBSTITUTE(J1,CHAR(34),"")
- Введите эту формулу в ячейку
J5
:=FindWord(J3,2)
Примечание.
- В этой формуле
2
определяется второе слово/текст в ячейке, которое будет следующим=FindWord(J3,3)
и т.д.
При необходимости можно использовать функцию КОНКАТЕНАЦИЯ.