Данные от текста к столбцу разделены в Excel - PullRequest
2 голосов
/ 27 сентября 2019

Привет и спасибо заранее. Я новичок в Excel vba и макросах, и мне нужна помощь по небольшой проблеме.

У меня есть файл Excel, содержащий набор записей, который импортировал форму ms, с именем продукта.Мне нужно разделить название продукта на несколько столбцов, нажав кнопку.Для некоторых наименований товаров текст может иметь разную длину, а также я хочу выделить, если только название состоит из 3А.Пример, который я хочу сделать, как показано ниже:

+-------------+------+------+------+------+------+
|Name         | Col1 | Col2 | Col3 | Col4 | Col5 |
+-------------+------+------+------+------+------+
|3A071908-253 |  3A  |  07  |  19  |  08  | 253  |
|3A011910R-220|  3A  |  01  |  19  |  10  | 220  |
|3A041912-123R|  3A  |  04  |  19  |  12  | 123  |
|WW071908-123 |      |      |      |      |      |
|13A131902-010|  3A  |  13  |  19  |  02  | 010  |
+-------------+------+------+------+------+------+

Я пробовал макрос, использующий функцию мастера преобразования текста в столбец с фиксированной шириной, чтобы сделать это, но данные не отображаются так, как я хочу.

Если есть какая-либо формула или коды для этого.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2019

Используйте следующие формулы в Col1 до Col5:

  • =IF(ISERROR(FIND("3A",A:A)),"","3A")
  • =IF($B:$B<>"",MID($A:$A,FIND("3A",$A:$A)+2,2),"")
  • =IF($B:$B<>"",MID($A:$A,FIND("3A",$A:$A)+4,2),"")
  • =IF($B:$B<>"",MID($A:$A,FIND("3A",$A:$A)+6,2),"")
  • =IF($B:$B<>"",MID($A:$A,FIND("-",$A:$A)+1,3),"")

enter image description here

Обратите внимание, что использование FIND чувствительно к регистру, что означает 3a не будет обнаружено.Если вы хотите, чтобы он чувствителен к регистру, чтобы он обнаруживал 3a и 3A, тогда измените FIND на SEARCH.

Также обратите внимание, что все извлеченные "числа" в Col2 в Col5 на самом деле текст.Это означает, что вы не можете рассчитывать с ними.Если вам нужно преобразовать их в действительные числа для расчета, используйте VALUE(), например =IF($B:$B<>"",VALUE(MID($A:$A,FIND("-",$A:$A)+1,3)),"") для Col5.

1 голос
/ 27 сентября 2019

Насколько я понимаю вашу проблему, эти формулы должны обеспечивать необходимую вам функциональность.Начиная с первой строки ваших данных (предположительно это строка 1 в примерах), слева направо:

=IF(ISNUMBER(SEARCH("3A",$A1)),MID($A1,SEARCH("3A",$A1),2),"")
=IF(ISNUMBER(SEARCH("3A",$A1)),MID($A1,SEARCH("3A",$A1)+2,2),"")
=IF(ISNUMBER(SEARCH("3A",$A1)),MID($A1,SEARCH("3A",$A1)+4,2),"")
=IF(ISNUMBER(SEARCH("3A",$A1)),MID($A1,SEARCH("3A",$A1)+6,2),"")
=IF(ISNUMBER(SEARCH("3A",$A1)),MID($A1,SEARCH("3A",$A1)+9,3),"")

Вы можете сделать это более изощренным способом, используя VBA, но я думаю, что этот простой подходбудет достаточно для вашего случая использования.

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