Maaf ada sedikit koreksi yg akhirnya di test ulang . Sub coba()
    Range("D8").Select
    nilaisebelumnya = Selection.Offset(0, 0)
    j = 0
    If IsNumeric(Mid(nilaisebelumnya, 2, 1)) Then
        Selection.Offset(i, 1) = Left(nilaisebelumnya, 1) & 
Mid(nilaisebelumnya, 2, panjang - 1) & "-" & WorksheetFunction.Text(j + 1, 
"###")
    ElseIf IsNumeric(Mid(nilaisebelumnya, 3, 1)) Then
        Selection.Offset(i, 1) = nilaisebelumnya
    End If
    jumbaris = Range("d8:d27").Rows.Count - 1    For i = 1 To jumbaris
        j = j + 1
        nilaisekarang = Range("D8").Offset(i, 0)
        panjang = Len(nilaisekarang)
        If nilaisekarang = nilaisebelumnya Then
            If WorksheetFunction.IsText(nilaisebelumnya) Then
                If IsNumeric(Mid(nilaisebelumnya, 2, 1)) Then
                    Selection.Offset(i, 1) = Left(nilaisebelumnya, 1) & 
Mid(nilaisebelumnya, 2, panjang - 1) & "-" & WorksheetFunction.Text(j + 1, 
"###")
                ElseIf IsNumeric(Mid(nilaisebelumnya, 3, 1)) Then
                    Selection.Offset(i, 1) = Left(nilaisebelumnya, 2) & 
WorksheetFunction.Text(Mid(nilaisebelumnya, 3, panjang - 2) + j, 
WorksheetFunction.Rept("0", panjang - 2))
                End If
            Else
                MsgBox "aturan lainya"
            End If
        Else
            nilaisebelumnya = nilaisekarang
            j = 0
            If IsNumeric(Mid(nilaisebelumnya, 2, 1)) Then
                Selection.Offset(i, 1) = Left(nilaisebelumnya, 1) & 
Mid(nilaisebelumnya, 2, panjang - 1) & "-" & WorksheetFunction.Text(j + 1, 
"###")
            ElseIf IsNumeric(Mid(nilaisebelumnya, 3, 1)) Then
                Selection.Offset(i, 1) = nilaisebelumnya
            End If        End If
    Next iEnd Sub Dan ada hal yang juga cukup mengganggu :di sel D18 terisi  : 
AA34556, apa seharusnya AA034556 ? karena jika dianggap sama maka perlu kdoing 
tambahan ?
 
 

  

 
'==== sebelumnya

















 



  


    
      
      
      


Sub coba()
    Range("D8").Select
    nilaisebelumnya = Selection.Offset(0, 0)
    Selection.Offset(0, 1) = nilaisebelumnya
    jumbaris = Range("d8:d27").Rows.Count - 1
    j = 1
    For i = 1 To jumbaris
        nilaisekarang = Range("D8").Offset(i, 0)
        panjang = Len(nilaisekarang)
        If nilaisekarang = nilaisebelumnya Then
            If WorksheetFunction.IsText(nilaisebelumnya) Then
                If IsNumeric(Mid(nilaisebelumnya, 2, 1)) Then
' P1234567   maka semua utuh P1234567 & "-" & urut ( 1,2,3,...)
                   Selection.Offset(i, 1) = Left(nilaisebelumnya, 1) & 
nilaisebelumnya & "-" & WorksheetFunction.Text(j + 1, "###")
                ElseIf IsNumeric(Mid(nilaisebelumnya, 3, 1)) Then
'AA123456  maka yg diambil 6 digit angka ( 8-2 )
                   Selection.Offset(i, 1) = Left(nilaisebelumnya, 2) & 
WorksheetFunction.Text(Mid(nilaisebelumnya, 3, panjang - 2) + j, 
WorksheetFunction.Rept("0", panjang - 2))
                End If
            Else
                MsgBox "aturan lainya"
            End If
            j = j + 1
        Else
            nilaisebelumnya = nilaisekarang
            Selection.Offset(i, 1) = nilaisekarang
            j = 1
        End If
    Next i
End Sub

 
To: [email protected]
From: [email protected]
Date: Thu, 20 Oct 2011 09:08:47 +0800
Subject: Fw: [belajar-excel] mengurutkan data


















 



  


    
      
      
      



Dear Pa' Hapsari



Mamtab...b

Tapi kayaknya ada yang kurang kalau boleh nambah seperti terlampir

dimana datanya akan semua diurutkan berdasarkan data teratas yang disorot kalau 
sekaligus di sorot

padahal patokannya adalah hanya dengan nilai teratas dengan nilai yang sama 
kalau sekaligus di sorot semua, tidak perlu yang sama saja

dan sebagai tambahan bagaimana agar angka misalnya 6 digit kalau kurang di 
tambah "0" di depang angka

Juga ada penambhan type item yang berbeda

mohon masukannya

Regards,

Gultom



----- Forwarded Message -----

From: Haps <[email protected]>

To: [email protected]

Sent: Wednesday, October 19, 2011 10:16 PM

Subject: Re: [belajar-excel] mengurutkan data



maaf ada salah tulis, di bagian penjelasan baris ke 3 yg bisa menimbulkan

kesulitan menangkap maksud yg disampaikan.



tertulis: 

Kelompok-depan namanya Pre (diharapkan berisi karakter-karakater Huruf)



seharusnya:

Kelompok-depan namanya Hrf (diharapkan berisi karakter-karakater Huruf)



terima kasih



2011/10/19 Haps <[email protected]>



"Tunjek" point saja...:

>

>

>Sub Ubah_NrPO()

>  ' hapsari / Oct 19, 2011

>  ' beExcel Posting# 13632

>  '--------------------------

>   Dim Nmr As Long, n As Integer

>   Dim Hrf As String, Itm As String

>   

>   Itm = Selection(1, 1)

>   For n = Len(Itm) To 1 Step -1

>      If Not IsNumeric(Mid(Itm, n, 1)) Then Exit For

>   Next

>   Hrf = Left(Itm, n)

>   Nmr = Val(Right(Itm, Len(Itm) - n))

>   For n = 1 To Selection.Rows.Count

>      Selection(n, 1) = Hrf & Nmr + n - 1

>   Next n

>

>

>End Sub

>

>

>Data pertama di daerah yg disorot (selection) dianggap mewakili semua data 

>di bawahnya; data itu kita ingat sbgItm dan kita penggal menjadi dua kelompok.

>Kelompok-depan namanyaPre (diharapkan berisi karakter-karakater Huruf)

>Kelompok belakang namanya Nmr (diharapkan berisi karakter-karakter Numeric)

>

>

>Untuk BISA membagi dua kelompok tsb diperlukan posisi (N) yaitu letak karakter

>HURUF (bukan angka)yg terkanan, untuk keperluan itu diperlukan loop (loop 
>pertama)

>yg hanya mengunjungi semua karakter dlm string Itm.

>

>

>Setelah itu dilakukan loop lagi yg mengunjungi semua cell dlm sorotan 
>(selection)

>tiap cell yg dikunjungi diisi DATA BARU yaitu gabungan dari  Hrf dan Nmr 
>tetapi 

>setiap stepNmr  ditambah dengan nilai Counter (n) dikurangi 1

>

>

>Pantas saja kalau hasilnya  sepeti yg diharapkan (mudah-mudahanan sih...)

>

>

>-haps-

>

>

   


    
     

    
    






                                          


    
     

    
    






                                          

Kirim email ke