2016-06-14 6 views
0

私は、次のような多くの文字列を持っている:数の文字列を爆発し、形式を変更

「1.5.22.1.2」

を、私はそれを離れて引っ張って、もう一度戻って一緒にそれを置く必要があるだろうこのように:

"1.05.22.01.02"

違いが股関節です最初のものには先行ゼロはありません。

文字列がoutプログラムの1つでコードとして使用されるため、これは大きな "コピー、操作、貼り付け"ジョブです。

+0

REGEXを使ってみましたか? – 3kstc

+0

申し訳ありませんREGEXの経験はありません。 – morne

+0

@morne、最初の数字は1か01でしょうか?結果として「01.05.22.01.02」が期待されますか? – ehh

答えて

1

非正統的な解決策は、新しいワークシートを開き、次の操作を実行することです:

1)変更したいすべての数字(1.5.22.1.2)をコピーして、新しいワークシートに貼り付けます。

2)細胞を強調表示し、[データ]タブに移動し、S

2A)を選択区切り「欄へのテキスト」を選択し、ちょうどドットで

2B NEXT

)タブとして選択区切り文字やその他のヒット:

enter image description here

図2c)が完成ヒット。

それぞれの数字は新しい列にある必要があり、if条件を使用して連結して連結します。

enter image description here

次にあなたが望むように列を変更することができます。たとえば

を私が持っている:

列1のために:=IF(E6<10, CONCATENATE(0,E6),E6)

:2列目のため=D6

列3の場合:=L6

列5用

:列4用

=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は簡単です:=のFormatThisとしてあなたの細胞から

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 

コール(A2)

関連する問題