
У меня есть таблица Excel со строками данных, как показано ниже. Есть код с названием продукта, а затем номер.
QA32 Product One (Large) 23
AZ63 Product Two 96
PR65 Product Three 149
Как разделить каждое поле на столбец?
Я попробовал «разбить текст на столбцы» в Excel, используя опцию с разделителями и разделяя пробелами, но тот факт, что некоторые названия продуктов содержали более одного слова, привел к тому, что некоторые числа оказались в неправильном столбце. Например,
Code Name Number
QA32 Product One (Large) 23
AZ63 Product Two 96
PR65 Product Three 149
Вот желаемый результат:
Code Name Number
QA32 Product One (Large) 23
AZ63 Product Two 96
PR65 Product Three 149
Помощь приветствуется!
решение1
Используйте FIND-function
для определения положения первого и последнего пробела. После этого используйте MID-function
для разделения данных на три части. Если вы знаете положение пробелов, разделение будет простым. Найти первый пробел также тривиально, так как FIND
он идет слева направо. К сожалению, нет способа указать Excel искать справа налево.
Итак, самое сложное — определить последний пробел! Здесь мы используем формулу массива.
Чтобы ввести формулу массива, вы вставляете формулу в ячейку и не нажимаете Enter.
Вместо этого вы нажимаете Ctrl+ Shift+ Enter.
{=MAX((MID(A2,ROW(A:A),1)=" ")*ROW(A:A))}
Если все сделано успешно, Excel добавит начальную и конечную фигурные скобки.
Вставьте все формулы в указанные ячейки и используйтеautofill down
A2: ваши данные идут сюда
B2: =FIND(" ",A2,1)
C2: =MAX((MID(A2,ROW(A:A),1)=" ")*ROW(A:A))
<-формула массива!
D2: =MID(A2,1,B2-1)
E2: =MID(A2,B2+1,C2-B2-1)
F2:=MID(A2,C2+1,LEN(A2))
Экран результата
решение2
Если подходящий алгоритм должен вернуть:
- Код = Первое слово
- Продукт = Все, что находится между первым и последним словом.
- Число = Последнее слово
Тогда следующие формулы должны работать.
Предположим, что ваши данные находятся в ячейке A1:
Code: =LEFT(TRIM(A1),FIND(" ",TRIM(A1))-1)
Product: =TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)),100,LEN(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)))-198))
Number: =TRIM(RIGHT(SUBSTITUTE(TRIM(A1)," ",REPT(" ",99)),99))