saya kebagian tugas memberi remarks pada makro nya
begini :
( semoga tidak terlalu nguawur ..)
Sub UnstructuredTextToTabel()
' by hapsari & siti Vi
' smg, 1 Oktober 2011
'---------------------
' pengumuman beberapa Variable-memory yg akan digunakan dlm mainan ini
Dim Rng As Range ' = variable Range yg akan diperosess
Dim Tbl As Range ' = variable Range dimana hasil akan dituliskan
Dim ArStr ' = Variant yg kemudian dijadikan array penampung data
' baris pertama tiap set data; (sebelumnya
data dipecah (Split) menjadi beberapa kata)
Dim Strx As String ' = hasil TRIM tiap string yg ditemui di tiap baris ex Tbl
Dim N As Long ' = counter, pencacah index baris pada Rng / loop For N - Next N
dim r As Long ' pencacah baris untuk pemandu penulisan Table hasil
dim p As Integer ' Angka-Posisi ditemukannya karakter "=" pada tiap Strx
' Trap jika terjadi error (karena user mengklik tombol cancel pada InputBox)
On Error GoTo Ngisor
' karena range yg akan diproses tidak dapat diduga secara otomatis
' (bikaos ada baris kosong didalamnya, maka informasi Letak dan Dimensinya
' lebih aman kalau ditentukan oleh Manusia User dengan mengisi InputBox
' Type 8 dm InputBox milik aplikasi excel adalah = object Range)
Set Rng = Application.InputBox( _
"Tentukan Range yg akan diproses", _
"Konversi Unstructured Text to Normal Tabel", _
Selection.Address, , , , , 8)
' menentukan letak Tbl (dimana hasil akan dituliskan)
Set Tbl = Sheets("hasil").Cells(2, 1)
' mengaktifkan sheet tempat beradanya (parent of) range Tbl
Tbl.Parent.Activate
' dimulainya sebuah kalang (loop) dengan counter = n yg bernilai dari 1
' setiap step menaik 1 sampai mencapai N = tinggi Rng (range yg diproses)
' For N = 1 To Rng.Rows.Count
' tiap baris data di Rng di TRIM (dengan fungsi TRIM milik Excel (bukan milik VBA)
' karena trim dari excel mampu menghilangkan KELEBIHAN spasi antar kata.
Strx = WorksheetFunction.Trim(Rng(N, 1))
' proses hanya akan dilanjutkan ke proses tingkat lebih dalam, jika Strx berisi data
If Len(Strx) > 0 Then
' Jika strx mengandung kata "ALARM " di bagian depannya..
If Strx Like "ALARM *" Then
' Strx di Split menjadi beberapa kata dan array kata tsb
' ditampung oleh variable ArStr
ArStr = Split(Strx, " ")
' nilai R dinaikkan 1 point
r = r + 1
' baris r pada tabel hasil, Kolom 1 diisi kata ke 2
Tbl(r, 1) = ArStr(1) ' Alarm #
' baris r pada tabel hasil, Kolom 2 diisi kata ke 3
Tbl(r, 2) = ArStr(2) ' type
' dst.... sampai kolom 5 diisi kata ke 6
' ( Array hasil fungsi Split selalu dimulai dgn Index pertama = 0 )
Tbl(r, 3) = ArStr(3) ' severity
Tbl(r, 4) = ArStr(5) ' ID
Tbl(r, 5) = ArStr(6) ' type alarm
End If
' menentukan nilai p (posisi ditemukannya karakter "=" pada Strx
p = InStr(1, Strx, "=")
' Jika dlm Strx terdapat "=" maka...
If p > 0 Then
' Jika Strx dimulai dengan kata "alarm name..", maka.."
If LCase(Strx) Like "alarm name*" Then _
' SubString setelah "=" diisikan ke Tabel hasil, Baris r, Kolom 6
Tbl(r, 6) = Mid(Strx, p + 2, 99)
' Jika Strx dimulai dengan kata "alarm shield.." maka
If LCase(Strx) Like "alarm shield*" Then _
' ya gitu dech.... seterusnya
Tbl(r, 7) = Mid(Strx, p + 2, 99)
If LCase(Strx) Like "to alarm*" Then _
Tbl(r, 8) = Mid(Strx, p + 2, 99)
If LCase(Strx) Like "modification*" Then _
Tbl(r, 9) = Mid(Strx, p + 2, 99)
End If
End If
Next N
Ngisor:
End Sub
'-------end of makro--------
note
note
penjelasan tidak ada artinya jika tanpa melihat workbook & data didalamnya
seperti halnya :
PETANYAAN juga tidak ada artinya jika tidak disertai contoh set data nya
( tapi banyak sekali member yg "hobi"nya tanya** tanpa kirim workbook...)
2011/9/29 dendi wijayatullah <dendi_wijayatullah@yahoo.com>
>
> dear all, mau bertanya sedikit. perkenalkan nama saya dendi.
( tapi banyak sekali member yg "hobi"nya tanya** tanpa kirim workbook...)
2011/9/29 dendi wijayatullah <dendi_wijayatullah@yahoo.com>
>
> dear all, mau bertanya sedikit. perkenalkan nama saya dendi.
> saya mau nanya cara memisahkan data dari tabel pertama menjadi seperti tabel kedua bagaimana ya caranya?
>
> Cara memisahkan data dari begini :
> ALARM 1 Fault Critical BSC 2158 Hardware
> Alarm name = SEND_DIV Channel Critical Alarm
> Alarm shield flag = Unshielded
> To alarm box flag = Report
> Modification flag = Unmodified
> ALARM 2 Fault Critical BSC 2448 Trunk
> Alarm name = Optical Receive Channel Alarm
> Alarm shield flag = Unshielded
> To alarm box flag = Report
> Modification flag = Unmodified
>
> Jadi begini gan :
>
> Alarm | type | severity alarm | alarm id | type alarm | alarm name | shield alarm | report alatm | modified alarm
> 1 | Fault | Critical | 2158 | Hardware | SEND_DIV Channel Critical Alarm | Unshielded | Report | Unmodified
>
> Gimana yah caranya? Pake macro kah? Terimakasih sebelumnya.
>
>
> Cara memisahkan data dari begini :
> ALARM 1 Fault Critical BSC 2158 Hardware
> Alarm name = SEND_DIV Channel Critical Alarm
> Alarm shield flag = Unshielded
> To alarm box flag = Report
> Modification flag = Unmodified
> ALARM 2 Fault Critical BSC 2448 Trunk
> Alarm name = Optical Receive Channel Alarm
> Alarm shield flag = Unshielded
> To alarm box flag = Report
> Modification flag = Unmodified
>
> Jadi begini gan :
>
> Alarm | type | severity alarm | alarm id | type alarm | alarm name | shield alarm | report alatm | modified alarm
> 1 | Fault | Critical | 2158 | Hardware | SEND_DIV Channel Critical Alarm | Unshielded | Report | Unmodified
>
> Gimana yah caranya? Pake macro kah? Terimakasih sebelumnya.
>
__._,_.___
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| ayooo... coba cari XL-mania di linkedin.com |
| tanggal 3-4 oktober yahoogroup akan mengalami maintenance. |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau... |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
| ayooo... coba cari XL-mania di linkedin.com |
| tanggal 3-4 oktober yahoogroup akan mengalami maintenance. |
+-------------------------------------------------------------------+
| DILARANG : MLM, money game, OOT, iklan tanpa izin, SARA, testing, |
| pembicaraan pribadi, one line message, melecehkan, tidak sopan. |
+-------------------------------------------------------------------+
| Buat subjek yang kreatif, jangan : "tanya", "help", "mohon bantu" |
| Usahakan besar attachment < 200 kb. Gunakan winzip jika perlu. |
+-------------------------------------------------------------------+
| Ajak teman-teman Anda bergabung dengan mengirim e-mail kosong ke |
| XL-mania-subscribe@yahoogroups.com atau kirimkan mereka file dari |
| http://groups.yahoo.com/group/XL-mania/files/Promotion/ |
+-------------------------------------------------------------------+
| Berikan testimoni di : http://www.friendster.com/xlmania atau... |
| http://www.xl-mania.com/2008/06/testimoni-xl-mania.html |
+-------------------------------------------------------------------+
| Message lama ada di : |
| http://groups.yahoo.com/group/XL-mania/messages [perlu yahoo id] |
| http://www.mail-archive.com/xl-mania@yahoogroups.com |
+-------------------------------------------------------------------+
MARKETPLACE
.
__,_._,___
Nenhum comentário:
Postar um comentário