Zavrieť

Porady

Makro - doplniť v reťazci pred bodkou a za bodkou dva číselné znaky

Dobrý deň

Potrebovala by som doplniť v reťazci pred bodkou a za bodkou dva číselné znaky.

Príklad :

XA1.1 rovná sa XA01.01
XA1.10 rovná sa XA01.10
XA2.3.1 rovná sa XA02.03.01

Ďakujem
Téma je uzavretá.
Usporiadať podľa času

2009 je offline (nepripojený) 2009

2009
Zabudla som dodať, že vždy sa dopĺňa dopredu 0 pokiaľ je tam iba jedno číslo.

PaloPa je offline (nepripojený) PaloPa

PaloPa
Napr. takto:

Code:
Sub PridajNulu()
'
    Dim xRng As Range, uu, x, a, i, c As Range
    uu = "XA" 'prefix, ktory treba oddelit
    
    Set xRng = Selection
    For Each c In xRng
        x = c.Value
        x = Mid(x, Len(uu) + 1)
        a = Split(x, ".")
        
        For i = LBound(a) To UBound(a)
            If Len(a(i)) = 1 Then
                a(i) = "0" & a(i)
            End If
        Next i
        
        c.Value = uu & Join(a, ".")
    Next c
    
End Sub
P.

2009 je offline (nepripojený) 2009

2009
PaloPa Pozri príspevok
Napr. takto:

Code:
Sub PridajNulu()
'
    Dim xRng As Range, uu, x, a, i, c As Range
    uu = "XA" 'prefix, ktory treba oddelit
    
    Set xRng = Selection
    For Each c In xRng
        x = c.Value
        x = Mid(x, Len(uu) + 1)
        a = Split(x, ".")
        
        For i = LBound(a) To UBound(a)
            If Len(a(i)) = 1 Then
                a(i) = "0" & a(i)
            End If
        Next i
        
        c.Value = uu & Join(a, ".")
    Next c
    
End Sub
P.
teraz vidím zadala som otázku zle. Reťazec sa nezačína rovnako. Môže tam byť jeden až viac Alfa znakov. Príklad:
A4.1 A04.01
A8.1.1.1 A08.01.01.01
XC1.3.01 XC01.03.01
Základ je vždy pred bodkou a za bodkou dva numerické znaky. Pokiaľ je tam iba jeden doplň ako prvú 0
Naposledy upravil 2009 : 09.04.13 at 09:35

PaloPa je offline (nepripojený) PaloPa

PaloPa
Ej veru, nedávaš ty ľahké zadania

Code:
   
Sub PridajNulu()
'
 Dim xRng As Range, uu, x, a, i, c As Range, j, u
    
    Set xRng = Selection
    For Each c In xRng
        x = c.Value
        
        uu = "" 'prefix, ktory treba oddelit
        For j = 1 To Len(x)
            u = Mid(x, j, 1)
            If (IsNumeric(u)) Or (u = ".") Then
                Exit For
            Else
                uu = uu & u
            End If
        Next j
        
        x = Mid(x, Len(uu) + 1)
        a = Split(x, ".")
        
        For i = LBound(a) To UBound(a)
            If Len(a(i)) = 1 Then
                a(i) = "0" & a(i)
            End If
        Next i
        
        c.Value = uu & Join(a, ".")
    Next c
    
End Sub

2009 je offline (nepripojený) 2009

2009
PaloPa Pozri príspevok
Ej veru, nedávaš ty ľahké zadania

Code:
   
Sub PridajNulu()
'
 Dim xRng As Range, uu, x, a, i, c As Range, j, u
    
    Set xRng = Selection
    For Each c In xRng
        x = c.Value
        
        uu = "" 'prefix, ktory treba oddelit
        For j = 1 To Len(x)
            u = Mid(x, j, 1)
            If (IsNumeric(u)) Or (u = ".") Then
                Exit For
            Else
                uu = uu & u
            End If
        Next j
        
        x = Mid(x, Len(uu) + 1)
        a = Split(x, ".")
        
        For i = LBound(a) To UBound(a)
            If Len(a(i)) = 1 Then
                a(i) = "0" & a(i)
            End If
        Next i
        
        c.Value = uu & Join(a, ".")
    Next c
    
End Sub
Ánóóóó.. Presne toto potrebujem. Vieš každý kvartál spracovávam určité dávky. Majú okolo 18 tisíc riadkov a k dispozícii mám iba Excel. Doteraz som to robila tak, že som delila text na stĺpce podľa bodiek a dopĺňala nulu. Ako za čias Márie Terézie fňuk .
Máš u mňa čokoládku. Evika
PaloPa ... pošli faxom :-)

Makro - doplniť v reťazci pred bodkou a za bodkou dva číselné znaky

Porady, ktoré by vás mohli zaujímať

Prihláste sa a sledujte len tie Porady, ktoré Vás zaujímajú.