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

Leave a Reply