yaitu jika workbook yg akan digabung sudah lebih dari 9;
atau 'BAGIAN ANGKA' pada nama workbook ada yg lebih dari satu digit
String SEPERTI Bilangan seperti ini (kiri); jika disort secara biasa
hasilnya akan seperti itu (kanan)
{"3","1","2","13","11","30","21","4"}
hasil sorting-ya : {"1","11","13","2","21","3","30","4"}
Seperti itu pulalah urutan hasil penggabungan tabel; karena nama workbook
walo pun sudah disimpan dalam array yg KATANYA "Sorted", tetapi sorting
atas "TEXT-BILANGAN" dengan cara biasa hasilnya tidak seperti harapan.
Untuk memperbaiki "bugs" ini; kita akan memperbaiki prosedur Fungsi bernama
MatchFileList, khusus di blok code yg mengerjakan sorting (algoritma bubble sort)
bubble-sort sebelum diperbaiki
Dim q As Integer, p As Integer, tp
For i = 1 To UBound(fArr) - 1
For q = n To i + 1 Step -1
p = q - 1
If fArr(q) < fArr(p) Then _
tp = fArr(q): fArr(q) = fArr(p): fArr(p) = tp
Next q
Next i
bubble-sort setelah diperbaiki
Dim q As Integer, p As Integer, tp
Dim Qn As Long, Pn As Long
For i = 1 To UBound(fArr) - 1
For q = n To i + 1 Step -1
p = q - 1
Qn = CLng(Trim(Mid(fArr(q), 1, InStr(1, fArr(q), " ") - 1)))
Pn = CLng(Trim(Mid(fArr(p), 1, InStr(1, fArr(p), " ") - 1)))
If Qn < Pn Then _
tp = fArr(q): fArr(q) = fArr(p): fArr(p) = tp
Next q
Next i
fArr adalah variable array yg elements-nya berisi text nama-nama file/workbook.
Sebelum sampai di blok code diatas; dia sudah berupa data tersaring sesuai syarat;
namun mungkin belum terurut / sorted.
Pengurutannya (pada code yg sudah direvisi) adalah dengan cara mengkonversi
bagian Bilangan pada nama File, yg semula bertype data text/string (misal "12")
menjadi bertype LongInteger (menjadi 12)
Hasil konversi yg sudah berupa bilangan (Qn dan Pn) barulah pakai sbg Logical_Test
dengan jalan membandingkannya: If Qn < Pn Then ....
Sedangkan kalimat: Mid(fArr(q), 1, InStr(1, fArr(q), " ") - 1)
hanyalah upaya mengambil BAGIAN BILANGAN SAJA dari sebuah NamaFile fArr(q)
yaitu karakter yg dimulai dari karakter posisi pertama, sebanyak bilangan posisi
ditemukannya karakter SPASI, mundur satu karakter.
wassalam,
siti
note:
lampiran (*.ZI_) jika tidak dapat secara langsung di expand dgn winzip/winrar
(menjadi sebuah folder berisi beberapa file xls); agar di-rename dulu menjadi *.ZIP
2010/7/5 STDEV(i) <setiyowati.devi@gmail.com>
jadi... maksod loh ... eh maksod-nya.... :
tabel yg ingin digabung hanya tabel dalam sheets yg ada di workbook bernama "X"
dimana X adalah string yg dimulai dengan ANGKA SPASI STRIP misal "145 -"
dan diakhiri oleh 4 karakter ".xls"
kalo gitu kita akan saring dulu files yg berada SeFOLDER dengan file utama (summary.xls)
folder ini oleh makro dikenali sebagai (ThisWorkbook.Path) di mana pun anda meletakkannya..
hasil penyaringan harus memenuhi keinginan tsb diatas, yaitu berupa nama nama file
yg POLANYA = "000000 - *.xls"
dengan "000000" adalah angka yg nilainya minimum 0; maximum = 999999999999999
hasil penyaringan sebaiknya berupa array string nama-nama file (yg memenuhi syarat)
dan ..... harus SORTED ascending.!!! supaya ketika digabung tidak ter-balik-bolak urutannnya..
(ini gampang; karena akan dikerjakan oleh sebuah UDF (atau FBD / made in dalam negeri)
bernama MatchFileList )
berdasarkan daftar itu-LAH kita membukai file-file tsb satu persatu
setiap terbuka satu file kita ambil datanya, lalu kita tempelkan di sheet 'detail' maupun 'kepala'
di workbook SUMMARY.XLS
cara mengambil maupun menempel tentunya harus sesuai aturan yg dikehendaki oom tomz itu
setelah satu file selesai "dikerjain" musti kudu ditutup untuk selanjutnya membuka file berikutnya...
selain itu masih ada pekerjaan kecil, yaitu mengubah data ex kolom URUTAN yg dari sumbernya
selalu "0001" kita ubah menjadi sesuai "angka nama workbook" yg sedang dibuka.
mudah mudahan coding ini ndak terlalu nguawurr...
-ctv-
'-----------coding list -----------------------
Sub GabungTabels()
' +------------------------------------+
' | mengCopy Tabel dari books yg |
' | memenuhi kriteria |
' | ke sheet Gabung di workbook ini |
' | sitiVi © modified 5 juli 2010 |
' +------------------------------------+
' | for XL-mania, OnBehalfOf tomz |
' +------------------------------------+
End Sub
'---------------end of coding list -----------------------
2010/6/28 Tommy <tomz.zlow@gmail.com>saya punya masalah dengan banyaknya data yang harus di-review satu persatu dan di-input satu persatu dan kemudian baru dikirim ke orang jakarta (untungnya bukan satu per-satu).. masalah sering terjadi saat proses input -- jika saya tidak punya waktu untuk review satu persatu..silahkan lihat contoh sederhana pada file terlampir..
Nenhum comentário:
Postar um comentário