Tecnologia, programação e muito Visual FoxPro.

sábado, 1 de outubro de 2011

Re: ]] XL-mania [[ Cara memisahkan data alarm

 

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 
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.
> 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.
>  

__._,_.___
Recent Activity:
+-:: 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              |
+-------------------------------------------------------------------+
MARKETPLACE

Stay on top of your group activity without leaving the page you're on - Get the Yahoo! Toolbar now.

.

__,_._,___

Nenhum comentário:

Arquivo do blog