Вопрос: Извлечение чисел из ячеек, содержащих смешанный текст


Если у меня есть они в столбце A:

   A

 om2222prakash 264737 suman 278
 kumar83566$ 267863; ravi0202;%43
 222gsranasjgjhjs56 djhdjdj58
 k4566hhhh23
 28.5ʺW × 33.0ʺD × 37.0ʺH
 W51.77 x D40.04 x H31.49
 W29.13 x D32.67 x H35.05

Как я могу узнать только числовые данные в A1, A2, A3 и A4? Я использую Microsoft Excel 2010, и хотел бы, чтобы результат выглядел так, как в столбце B:

  B

2222,264737,278
83566,267863,0202,43
222,56,58
4566,23
28.5,33.0,37.0
51.77,40.04,31.49
29.13,32.67,35.05

0
2018-04-24 11:00


Источник


Я не вижу способа сделать это с помощью встроенных функций Excel, но это просто в VBA, как описано Вот, Если вы не знаете VBA или Regular Expressions, то вам не будет легко, но я не знаю более простого решения. - AFH


Ответы:


я использую regex find / replace addin для получения функций регулярного выражения в Excel.
(Я никак не связан с этим инструментом, просто восторженный пользователь.)

Там вы можете использовать RegExReplace функция:

  • =RegExReplace(A1,"[^0-9]+",",") заменить все не числовые данные на ,
  • =RegExReplace(B1,"^,?(.+[^,]),?$","$1") удалить ведущие и задние ,

Или в одной формуле:
=RegExReplace(RegExReplace(A2,"[^0-9]+",","),"^,?(.+[^,]),?$","$1")

enter image description here

Обновить

Чтобы правильно управлять десятичными числами, вам нужно слегка изменить формулу:

  • Сохраняйте только цифры и .:
    =RegExReplace(A1,"[^0-9.]+",",") 
  • Дополнительный шаг: удалить все . не входит в число:
    =RegExReplace(B1,"[,.]{2,}",",")
  • Последний шаг остается тем же:
    =RegExReplace(C1,"^,?(.+[^,]),?$","$1") 

1
2018-04-24 11:38



Если мой ввод 25.0"W × 40.0"D × 36.0"H 28.5"W × 33.5"D × 37.0"H, и у меня есть выход -> 25.0, 40.0, 36.0 28.5, 33.5, 37.0 - Sam Rathore
Измените свой вопрос, чтобы я мог обновить свой ответ. - Máté Juhász
я могу изменить свой вопрос, пожалуйста, предложите .. - Sam Rathore