2016-06-14 3 views
0

У меня есть много строк, таких как:Explode номер строки и изменить формат

«1.5.22.1.2»

и мне нужно было вытащить его на части и положить его снова вместе как это:

"1.05.22.01.02"

разница в том, тха t для первого нет начального нуля.

Это большое, «копировать, манипулировать и вставлять» работу, потому что строки используются как коды в одной из программ.

+0

Вы пробовали использовать REGEX? – 3kstc

+0

Извините, у меня нет опыта работы с REGEX. – morne

+0

@morne, первая цифра будет 1 или 01? Ожидаете ли вы «01.05.22.01.02»? – ehh

ответ

1

неортодоксальные решение открыть новый рабочий лист и сделайте следующее:

1) Скопируйте все номера (1.5.22.1.2), которые вы хотите изменить, и вставьте в новый рабочий лист.

2) Выделите ячейки и перейдите на вкладку DATA и выберите «Текст в колонке» S

2а) Выберите Разграниченный и нажмите ДАЛЕЕ

2b) Выберите разделители, как Tab и другие только с точкой :

enter image description here

2с) Hit Закончено.

Теперь каждое из чисел должно быть в новом столбце, и вы собираетесь использовать, если условия затем объединяют их.

enter image description here

Затем вы можете изменить столбцы, как вы хотите:

к примеру у меня есть:

для столбца 1: =D6

для столбца 2: =IF(E6<10, CONCATENATE(0,E6),E6)

для столбца 3: =L6

для столбца 4: =IF(G6<10, CONCATENATE(0,G6),G6)

для колонки 5: =IF(H6<10, CONCATENATE(0,H6),H6)

Если это выход вы после этого, то мы можем сжать вместе конкатенация:

enter image description here

Конец продукт - столбик P или (моя колонка 6)

Формула для конкатенации: =CONCATENATE(D6,".",E6,".",F6,".",G6,".",H6)

+0

Да, ситуация на самом деле сложна с текстовыми файлами и т. Д., Так что это наиболее подходящий ответ. спасибо – morne

+0

@morne вы можете добавить больше условий для каждого из столбцов, как вы пожелаете, прежде чем все столбцы будут объединены с «'. »внутри каждого столбца. – 3kstc

2

Возможно VBA UDF проще:

Function FormatThis(oCell As Range) As String 
    Dim vValue As Variant 
    Dim vSplit As Variant 
    Dim lCt As Long 
    vSplit = Split(oCell.Value, ".") 
    For lCt = LBound(vSplit) + 1 To UBound(vSplit) 
     vSplit(lCt) = Format(vSplit(lCt), "00") 
    Next 
    FormatThis = Join(vSplit, ".") 
End Function 

вызовов из вашей ячейки, как = FormatThis (А2)

Смежные вопросы