,

Cara Memisahkan Kata dengan Awalan Hurup Besar


Pasti kalian sering mendengan atau menggunakan Fungsi Text To Columns, ya. Fungsi ini berada di Menu Ribbon Microsoft Excel dibagian Menu Data. Menu ini berfungsi untuk memisahkan Kata menjadi Kolom-kolom seuai dengan tanda pemisahnya, contohnya seperti Spasi , dash( “-“), comma( “,”) dll.

Jika kita memiliki data yg terbagung dalam 1 cell dan ingin dipisahkan sesuai kolom-kolomnya kita bisa menggunakan fungsi tersebut tetapi dengan sarat ada tanda pemisahnya jelas. Nah bagaimana jika data yg kita miliki tidak memiliki tanda pemisah yang jelas seperti yang saya sebutkan diatas, misalnya sepert data dibawah ini :

Jika menggunakan Text To Columns tentu kita akan kesulitan karena pada Menu Text to Columns tidak ada pilhan untuk memisahkan berdasarkan Hurup besar diawal. Lalu bagaimana caranya?, untuk caranya bisa simak penjelasan dibawah.

Memisahkan Kata Dengan Menggunakan Formula

Tentu saja Opsi pertama adalah dengan Menggunakan Formula. karena formula ini sangat mudah sekali penerapannya, bahkan oleh orang yang baru belajar (baca:Noob) sekalipun.

 Excel Formula 
=IFERROR(MID($A2,SMALL(IF((CODE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))>=65)*(CODE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))<90)=0,"",ROW(INDIRECT("1:"&LEN($A2)))),B$1),IFERROR(SMALL(IF((CODE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))>=65)*(CODE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))<90)=0,"",ROW(INDIRECT("1:"&LEN($A2)))),C$1),LEN($A2)+1)-SMALL(IF((CODE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))>=65)*(CODE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))<90)=0,"",ROW(INDIRECT("1:"&LEN($A2)))),B$1)),"")

dari data diatas, untuk melakukan pemisahan kata diperlukan kolom bantu dan juga menggunakan Formula CSE. dan hasilnya sepeti dibawah ini

catatan : tanda { } pada formula atas adalah Formula CSE atau Formula Array yaitu dengan cara menekan CTRL+ Shift + Enter

Memisahkan kata Menggunakan Macro VBA

Selain menggunakan formula kita juga bisa menggunakan macro agar tidak terlihat rumus yang sangat panjang dan juga tidak membutuhkan kolom bantu seperti pada contoh diatas. denga VBA kita bisa langsung memisahkan kata dan memasukan setipa kata ke dalam Kolom

caranya adalah yang pertama , buat sebuah shapes klik kanan dan pilih Assign Macro untuk nanti kita memanggil macro nya. setelah itu pastekan script dibawah

 Visual Basic Editor 
'//==============================
'//Apps : Pisah kata tanpa Regex
'//Auth : ExcelNoob.com
'//==============================
Dim Rng As Range, DBArea As Range
Dim i As Integer, Temp As String, Pisah() As String
Set DBArea = Worksheets("Sheet1").Range("A2:A20")

For Each Rng In DBArea
    Temp = Rng.Value
    For i = 1 To Len(Temp)
        If Mid(Temp, i, 1) = UCase(Mid(Temp, i, 1)) Then
            If i <> 1 Then
                Temp = Left(Temp, i - 1) + " " + Right(Temp, Len(Temp) - i + 1)
                i = i + 1
            End If
        End If
    Next i
    
    'Masukan ke kolom
    Pisah = Split(Temp, " ")
    For i = 0 To UBound(Pisah)
        Rng.Offset(0, i + 1).Value = Pisah(i)
    Next i
Next Rng

Menggunakan Macro VBA dengan Regex

yang ketika ini adalah yang menjadi pilihan saya, yang ketiga ini adalah memisahkan kata dengan menggunakan Macro VBA menggunakan Regular Expression (REGEX) . untuk caranya sama seperti diatas yg berbeda hanya scriptnya saja. dengan mengunakan regex caranya seperti dibawah ini :

 Visual Basic Editor 
'//==============================
'//Apps : Pisah kata dengan Regex
'//Auth : ExcelNoob.com
'//==============================
Dim Pisah() as string, i As Integer
Dim Rng As Range, DBArea As Range
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
Set DBArea = Sheets(1).Range("A2:A20")
For Each Rng In DBArea
    With objRegex
    .Global = True
    .Pattern = "([a-z])([A-Z])"
    Pisah = Split(.Replace(Rng, "$1 $2"), " ")
    For i = 0 To UBound(Pisah)
        Rng.Offset(0, i + 1).Value = Pisah(i)
    Next i
    End With
Next Rng

baik yang menggunakan Regex ataupun hanya macro VBA biasa kedua hasilnya sama yaitu bisa memisahkan kata dengan awalan hurup besar. kedua script diatas hasilnya akan sepreti ini

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *