Текст в столбцы Выравнивание данных

271
Sean Hullah

У меня есть куча данных, например:

FOB0046WHT White business casual plain classic fit 20.8 41.7 1 2 24 24 24 0 20.8 1 0 12.2 0.584 24.3  FOB0083BLU Denim blue business casual plain extra slim fit 14.5 58.2 1 4 1 1 1 0 43.6 3 -29.1 6 0.413 24.2 0.416  FOB0184NPK Navy and pink business casual double face slim fit 16.6 16.6 1 1 0 0 0 0 0 0 16.6 5 0.303 5 0.303  FOB0186SKY Sky business casual non iron button down classic fit 90.3 90.3 4 4 19 4.8 19 0 0 0 90.3 49.4 0.548 49.4 0.548  FOB0186WHT White business casual non iron button down classic fit 83.4 83.4 3 3 6 2 6 0 0 0 83.4 73.5 0.882 73.5 0.882  FOB0188WHT White business casual non iron button down slim fit 104.2 164.6 5 8 33 6.6 33 0 60.4 3 43.7 53.2 0.51 80.5 0.489  FOB0209SKY Sky non iron extra slim fit business casual dobby grid shirt 60.4 102.1 3 5 24 8 24 0 41.7 2 18.8 33.6 0.556 57.4 0.562  FOB0046CHA Charcoal classic fit business casual shirt 145.8 187.5 7 9 20 2.9 20 0 41.7 2 104.2 83.5 0.573 107.4 0.573  FOB0046CHM Chambray denim classic fit business casual shirt 20.8 20.8 1 1 0 0 0 0 0 0 20.8 11.8 0.568 11.8 0.568  FOB0046IDG Indigo classic fit business casual shirt 20.8 20.8 1 1 0 0 0 0 0 0 20.8 11.8 0.566 11.8 0.566  FOB0083CHA Charcoal extra slim fit business casual shirt 20.8 20.8 1 1 0 0 0 0 0 0 20.8 12.5 0.601 12.5 0.601  FOB0083CHM Chambray denim extra slim fit business casual shirt 57.7 57.7 3 3 0 0 0 0 0 0 57.7 32.7 0.566 32.7 0.566  FOB0083IDG Indigo extra slim fit business casual shirt 104.2 104.2 5 5 21 4.2 21 0 0 0 104.2 62.3 0.598 62.3 0.598  FOB0112CHM Chambray denim slim fit business casual shirt 76.4 97.3 4 5 24 6 24 0 20.8 1 55.6 41 0.537 53 0.545  FOB0186LPK Light pink non iron classic fit bus cas button down shirt 62.5 62.5 3 3 20 6.7 20 0 0 0 62.5 32.9 0.527 32.9 0.527  

Я использую текст в столбце, но из-за того, что текст состоит из другого числа слов, числа полностью выровнены, есть ли способ вернуть их в соответствующие столбцы?

0
Добавить кавычки `" `вокруг текста? DavidPostill 7 лет назад 0
Вам нужен один столбец с кодом слева, второй столбец с текстом элемента, а затем все цифры в своих собственных столбцах? Raystafarian 7 лет назад 0
Да, точно. Таким образом, заголовки столбцов будут Code / Description / # / # / # и так далее. Но из-за того, что описания отличаются по характеру и длине слова, я не слишком уверен, что делать. Sean Hullah 7 лет назад 0
Проблема с размещением текста вокруг текста состоит в том, что у меня более 1000 строк данных, и это заняло бы слишком много времени. Sean Hullah 7 лет назад 0

3 ответа на вопрос

1
Gary's Student

С такими данными в столбце A :

enter image description here

Запуск этого короткого макроса:

Sub ReFormatData() Dim N As Long, i As Long, st As String Dim j As Long N = 15  For i = 1 To N st = Cells(i, 1).Text ary = Split(st, " ") Cells(i, 2).Value = ary(0) For j = 2 To UBound(ary) If IsNumeric(ary(j)) Then Exit For Cells(i, 3).Value = Cells(i, 3).Value & " " & ary(j) Next j  L = 4 For k = j To UBound(ary) Cells(i, L).Value = ary(k) L = L + 1 Next k Next i End Sub 

будет производить это в столбцах B и далее:

enter image description here

Что делать, если внутри текстовой части есть число? `UBZIFZIFF Мой случайный текст с 1 номером внутри 20 12 13 43 1.23` даст другой результат nixda 7 лет назад 0
@ nixda ** Вы совершенно правы! ** код будет работать только в том случае, если данные похожи на опубликованные примеры данных ................ исключение нужно будет исправить вручную. Gary's Student 7 лет назад 0
@nixda Да, это происходит примерно в 500 строках, где у меня есть «черные 3 пачки», и когда я их использую, он пропускает первую работу в каждом ряду. Есть идеи для решения? Помимо этого работает прекрасно! Sean Hullah 7 лет назад 0
0

Если вы предпочитаете решение не VBA с большой формулой, попробуйте следующее:
=RIGHT(RIGHT(A2,LEN(A2)-FIND(" ",A2,1)),LEN(RIGHT(A2,LEN(A2)-FIND(" ",A2,1)))-MIN(SEARCH(,RIGHT(A2,LEN(A2)-FIND(" ",A2,1))&"0123456789"))+1)

Он найдет первое место числа после первого пробела (после первого слова, которое содержит 46 FOB0046WHT), и в результате будут все числа в одной ячейке. После копирования результата можно использовать текст в столбцах и специальную вставку. Ценности.

enter image description here

Это отличное и простое решение, однако, как я уже упоминал выше ниже, у меня есть описания с числами, а затем они снова скремблируют все числа, тогда какой будет лучший способ отделить описания и коды используя TTC? Любой способ сортировки чисел слева, а не справа? Sean Hullah 7 лет назад 0
0
Máté Juhász

Вот решение с регулярными выражениями. Для его использования вам понадобится RegEx Find / Replace Add-in .

enter image description here

  • формула для кода:
    =RegExFind(A1,"[A-Z0-9]*")
  • формула для описания:
    =RegExReplace(A1,"[A-Z0-9]* (.*[a-z]) [0-9. ]*","$1")
  • формула для чисел:
    =RegExFind(SUBSTITUTE($A1,$B1&" "&$C1&" ",""),"[0-9.-]* ",COLUMN()-3)

Он также работает правильно, если текст содержит цифры, сохраняет все до последней буквы в описании.

Похожие вопросы