koreksi ketikan:

Misal A1 = 1234567890
=Insret(A1,4,",") menghasilkan 12,3456,7890
=Insret(A1,3,"/") menghasilkan 1/234/567/890


>semoga bermanfaat






________________________________
From: anton suryadi <[email protected]>
To: [email protected]
Sent: Mon, May 17, 2010 1:19:51 PM
Subject: Re: [belajar-excel] Menginsert KOMA setiap 5 karakter


Function Insret(t As Range, x As String, Optional y As String = "") As String
n = t
z = Len(n) - x
Do While z > 0
    n = Left(n, z) & y & Right(n, Len(n) - z)
    z = z - x
Loop
Insret = n
End Function

Misal A1 = 1234567890
=Insret(A1,5,",") menghasilkan 12,3456,7890
=Insret(A1,3,"/") menghasilkan 1/234/567/890


>semoga bermanfaat






________________________________
From: Mr. Kid <[email protected]>
To: [email protected]
Sent: Sun, May 16, 2010 2:39:45 AM
Subject: Re: [belajar-excel] Menginsert KOMA setiap 5 karakter

  
Dulu pernah buat penyusun pattern id seperti begini :

Public Function SetPatternBase( sText As String, _
                           lPanjang As Long, _
                           Optional sSisip As String = "|") As String
    Dim sRes As String
    sText = Trim$(sText)
    If lPanjang < 1 Then
        GoTo TidakValid
    ElseIf LenB(sText) = 0 Then
        GoTo TidakValid
    End If
    
    Do While LenB(sText) > 0
        sRes = sRes & Left$(sText, lPanjang) & sSisip
        sText = Mid$(sText, lPanjang + 1)
    Loop
    SetPatternBase = Trim$(Left$( sRes, Len(sRes) - Len(sSisip)) )
    
    Exit Function
TidakValid:
    SetPatternBase = sText
End Function

Hanya saja, bisanya selalu baca dari kiri ke kanan. Kemudian ada client yang 
butuh basisnya dari sisi kanan (seperti masalah Pak HerrSoe), maka diubah kala 
itu menjadi lebih panjang dikit tapi bisa untuk kiri dan kanan, seperti begini :

Public Function SetPattern(sText As String, _
                           lPanjang As Long, _
                           Optional sSisip As String = "|", _
                           Optional sAlign As String = "left", _
                           Optional bTrim As Boolean = True) As String
    Dim lAdd As Long
    Dim sRes As String
    
    'trap error input
    If bTrim Then
        sText = Trim$(sText)
    End If
    sAlign = LCase$(sAlign)
    If lPanjang < 1 Then
        GoTo TidakValid
    ElseIf LenB(sText) = 0 Then
        GoTo TidakValid
    ElseIf sAlign <> "left" And sAlign <> "right" Then
        GoTo TidakValid
    End If
    
    If sAlign = "right" Then
        sText = StrReverse(sText)
        sSisip = StrReverse(sSisip)
    End If
    
    Do While LenB(sText) > 0
        sRes = sRes & Left$(sText, lPanjang) & sSisip
        sText = Mid$(sText, lPanjang + 1)
    Loop
    
    If bTrim Then
        sRes = Trim$(Left$( sRes, Len(sRes) - Len(sSisip)) )
    Else
        sRes = Left$(sRes, Len(sRes) - Len(sSisip))
    End If
    
    If sAlign = "right" Then
        SetPattern = StrReverse$( sRes)
    Else
        SetPattern = sRes
    End If
    
    Exit Function
    
TidakValid:
    SetPattern = sText
End Function

Untuk kebutuhan standarisasi tampilan kode yang delimiternya menurut aturan 
tertentu (tidak konstan selalu berbilang n karakter), maka harus dirombak 
kearah penggunaan array, sehingga kode menjadi lebih panjang lagi, tetapi bisa 
untuk kiri kanan dan tetap bisa digunakan untuk aturan dengan n karakter 
konstan seperti client yang dulu.
Kode programnya seperti ini :
Public Function SetPatternDin( sText As String, _
                           vPanjang As Variant, _
                           Optional vSisip As Variant = "|", _
                           Optional sAlign As String = "left", _
                           Optional bTrim As Boolean = True) As Variant
    Dim vTemp As Variant
    Dim lTemp As Long
    Dim vPjg As Variant
    Dim lPjg As Long
    Dim vDelimiter As Variant
    Dim lDelimiter As Long
    Dim sRes As String
    Dim lSisip As Long
    Dim bKanan As Boolean
    
    bKanan = False
    If bTrim Then
        sText = Trim$(sText)
    End If
    sAlign = LCase$(sAlign)
    If IsArray(vPanjang) Then
        vPjg = vPanjang
    Else
        ReDim vPjg(1, 1)
        vPjg(1, 1) = vPanjang
    End If
    lPjg = UBound(vPjg)
    
    If IsArray(vSisip) Then
        vDelimiter = vSisip
    Else
        ReDim vDelimiter(1)
        vDelimiter(1) = vSisip
    End If
    lDelimiter = UBound(vDelimiter)
    
    If lPjg * lDelimiter = 0 Then
        GoTo TidakValid
    ElseIf LenB(sText) = 0 Then
        GoTo TidakValid
    ElseIf sAlign <> "left" And sAlign <> "right" Then
        GoTo TidakValid
    End If
    
    If sAlign = "right" Then
        sText = StrReverse(sText)
        bKanan = True
    End If
    
    lTemp = 0
    lSisip = 0
    For Each vTemp In vPjg
        If LenB(sText) <> 0 Then
            If CLng(vTemp) > 0 Then
                lTemp = lTemp + 1
                If lTemp > lDelimiter Then
                    lTemp = 1
                End If
                lSisip = Len(vDelimiter( lTemp))
                If bKanan Then
                    sRes = sRes & Left$(sText, vTemp) & StrReverse(vDelimit 
er(lTemp) )
                Else
                    sRes = sRes & Left$(sText, vTemp) & vDelimiter(lTemp)
                End If
                sText = Mid$(sText, vTemp + 1)
            End If
        End If
    Next vTemp
    If bTrim Then
        sRes = Trim$(Left$( sRes, Len(sRes) - lSisip))
    Else
        sRes = Left$(sRes, Len(sRes) - lSisip)
    End If
    
    If sAlign = "right" Then
        SetPatternDin = StrReverse$( sRes)
    Else
        SetPatternDin = sRes
    End If
    
    Exit Function

TidakValid:
    SetPatternDin = sText
End Function

Sampai sekarang, tidak tahu sudah dibetulkan dibagian mana saja, jadi kalau ada 
bug, mohon dibetulkan dan di posting ulang ke milis dan terima kasih sebelumnya.

Hanya saja, pada file xls ada peringatan ketika akan di save, maka disertakan 
juga versi xlsm (xl2007), karena ini penulisan ulang ke excel dengan 
menyesuaikan array pattern length.
Sayangnya, array delimiter tidak bisa merujuk ke ranges. Mungkin ada yang mau 
memperbaikinya (hehehe... cari enaknya sendiri)

Regards.
Kid.



2010/5/15 siti Vi <setiyowati.devi@ gmail.com>

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>  >
>
>>
> 
>>      
> 
>>
>
>Daripada "pusing formula" 
>(atau cell formatting?? ) pakai UDF aja dech ya....
> 
>Dengan UDF InsertChar kita dapat bebas 
>menenetukan
>**interval antar karakter yg akan disisipkan (dlm pemintaan = 
>5)
>    dapat 
>dibuat bebas, mau 2, mau 8, mau 3 tinggal menuliskan sbg 
>    argument 
>ke 2
>**Karakter yg akan dipakai sebagai PENYISIP / 
>separator (yg disisipkan) 
>   (dlm 
>permintaan = KOMA (","),  juga dapat anda tentukan sendiri
>   misal  "/",  "|"  atau mungkin  
>"///"  atau "____" terserah saja
> 
>Sintaks nya
>=InsertChar( Cell, 
>JumlahKarakter, [Karakter_penyisip] )
>misal 
>=InsertChar( A1,5,",")
> hasilnya sesuai permintaan HerrSoe: 
>00000,12345, 67890,12345
> 
>=InsertChar( F16,8,"\\")
>  hasilnya bisa spt 
>ini  xxxxxxxx\\xxxxxxxx\ \xxxxxxxx\ \
>remarks:
>Argument ke 3 (karakter 
>penyisip/separator)jika dikosongkan akan dianggap 
>KOMA
>Lihat workbook 
>(attached)
> 
>'------------ -------
>Function 
>InsertChar(Xel As Range, N As Byte, _
>   Optional 
>Separator As String = ",") As 
>String
>   ' siti Vi / 15 May 
>2010
>   
>   Dim X As String, t As String, s As 
>String
>   X = Xel.Text
>   
>Do
>      s = Separator & Right(X, 
>N)
>      If Len(X) >= N 
>Then
>         t = s & 
>t
>      
>Else
>         t = X & 
>t
>         Exit 
>Do
>      End If
>      X 
>= Left(X, Len(X) - N)
>   Loop
>   If Left(t, 
>Len(Separator) ) = Separator Then t = Right(t, Len(t) - 1)
>   
>InsertChar = t
>End Function
> 
>
________________________________
 
>----- Original Message ----- 
>>From: HerrSoe 
>>To: belajar-excel 
>>Sent: Friday, May 14, 2010 11:01 PM
>>Subject: [belajar-excel] Menginsert KOMA 
>>  setiap 5 karakter>> 
>>Dear Group,
>>Bagaimanakah cara termudah untuk memberi KOMA 
>>  tiap 5 karakter
>>dihitung dari kanan; contohnya seperti ini
>>
>> 
>>
>> 
>>input (type data: 
>>        text)
>> output 
>> (type data: text)
>> 
>>10000023456789012345 00000,12345, 67890,12345 
>>0001230004560007890 00321000 00,01230,00456, 00078,90003, 21000 
>>formula OKE, UDF juga wellcome..
>>
>>Terima kasih. 

 



      

Kirim email ke