Dear Pak hendrik Karnadi, Pak Anton Suryadi, dan Mr Kid
Mohon maaf sebelumnya kalo saya baru bisa balas email, karena ada 1 dan lain hal. BTW, rumus yang di berikan oleh Pak hendrik Karnadi, Pak Anton Suryadi, dan Mr Kid, semua berjalan dengan baik Dan masing masing punya Jurus sendiri..karena padepokannya juga berbeda J Terimakasih, atas penjelasan yang sudah terperinci oleh Mr Kid, sehingga saya yang "Grotal Gratul" soal excel harus sedikit belajar tentang penjelasan yang sudah di berikan. Salam Yan Novianto From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com] On Behalf Of Kid Mr. Sent: Saturday, February 18, 2012 10:29 AM To: belajar-excel@yahoogroups.com Subject: Re: [belajar-excel] Mengubah value setting di data pivot menjadi SUM / COUNT secera multi Dear Yan, Coba buat sebuah module dan copas routine berikut : Public Sub SeragamPivotDataField() Dim pvtField As PivotField 'variabel object pivot data field Dim lPvtFunc As Long 'variabel nilai properti konstanta fungsi summary On Error GoTo Keluar 'trap error (misal gak ada data field) lPvtFunc = -4157 'set default konstanta fungsi summary If PivotTables(1).DataFields(1).Function = lPvtFunc Then 'ubah konstanta fungsi summary yang harus digunakan lPvtFunc = -4112 End If For Each pvtField In PivotTables(1).DataFields 'loop setiap data field pvtField.Function = lPvtFunc 'ubah konstanta summary data field terpilih Next pvtField 'ke data field berikutnya Exit Sub 'keluar dari routine (supaya gak masuk blok trap error) 'blok trap error Keluar: Err.Clear 'clear status error On Error GoTo 0 'clear trap error 'pesan error ke user MsgBox "Tidak ada data field", vbCritical, "Seragamkan Summary Function Data Fields" End Sub Kemudian buat sebuah shapes dalam worksheet dan assign macro ke routine di atas. Proses penyeragaman adalah berdasar data field pertama. Jika data field pertama bukanlah Sum, maka akan dijadikan sum. Silakan coba set setiap data field dengan fungsi summary yang berbeda-beda. Jika data field pertama adalah Sum, makan akan dijadikan Count. Silakan ubah nilai konstanta (seperti -4157 atau -4112) dengan nilai lain yang dibutuhkan. Ketika tidak ada data field terpasang, maka akan muncul pesan error. Silakan coba untuk mengosongkan data field. Bagaimana jika ingin menggunakan fungsi summary lebih dari 2 ? misal ingin berubah berputar dengan urutan : Sum, Count, Max lalu ke Sum lagi dst. Penggunaan array yang berisi konstanta fungsi-fungsi summary yang akan digunakan akan membantu proses pemilihan fungsi summary berikutnya yang akan digunakan. Proses ini membutuhkan sebuah loop terhadap array konstanta tersebut. Kira-kira bunyi routine-nya menjadi : Public Sub SeragamPivotDataField1() Dim pvtField As PivotField 'variabel object pivot data field Dim vPvtFuncColls As Variant, vLoopColls As Variant Dim lPvtFuncIdx As Long, lLoop As Long On Error GoTo Keluar 'trap error (misal gak ada data field) vPvtFuncColls = Array(-4157, -4112, -4136, -4157) 'base option default adalah 0 pada VBA 6.5 lPvtFuncIdx = 0 For Each vLoopColls In vPvtFuncColls If ActiveSheet.PivotTables(1).DataFields(1).Function = vLoopColls Then lPvtFuncIdx = lLoop + 1 Exit For End If lLoop = lLoop + 1 Next vLoopColls For Each pvtField In ActiveSheet.PivotTables(1).DataFields 'loop setiap data field pvtField.Function = vPvtFuncColls(lPvtFuncIdx) 'ubah konstanta summary data field terpilih Next pvtField 'ke data field berikutnya Exit Sub 'keluar dari routine (supaya gak masuk blok trap error) 'blok trap error Keluar: Err.Clear 'clear status error On Error GoTo 0 'clear trap error 'pesan error ke user MsgBox "Tidak ada data field", vbCritical, "Seragamkan Summary Function Data Fields" End Sub Bagian deklarasi dimensi diubah, dari Dim lPvtFunc As Long menjadi beberapa baris yang berwarna magenta. Blok penentuan nilai default dan pemilihan fungsi summary yang akan digunakan berikutnya, yang berbunyi : lPvtFunc = -4157 If PivotTables(1).DataFields(1).Function = lPvtFunc Then lPvtFunc = -4112 End If diubah menjadi : (warna merah) 1. pembuatan daftar (array) nilai konstanta dari fungsi-fungsi summary yang akan digunakan : vPvtFuncColls = Array(-4157, -4112, -4136, -4157) Pengulangan item pertama array pada item terakhir array adalah sebagai pengatur proses kembali ke item pertama array pada proses klik selanjutnya oleh user. 2. penetapan nilai default, yaitu pada item pertama array yang ber-index 0 karena default base option adalah 0 pada VBA 6.5, kecuali ada deklarasi penentuan base option. lPvtFuncIdx = 0 3. loop mencari index array dari fungsi summary yang digunakan data field pertama, kemudian set index array menjadi index dari fungsi summary berikutnya yang ada di array. For Each vLoopColls In vPvtFuncColls If ActiveSheet.PivotTables(1).DataFields(1).Function = vLoopColls Then lPvtFuncIdx = lLoop + 1 Exit For End If lLoop = lLoop + 1 Next vLoopColls Bagian akhir yang disesuaikan adalah penentuan fungsi summary pada setiap data field yang ada dalam pivot table, yaitu yang diberi warna hijau. For Each pvtField In ActiveSheet.PivotTables(1).DataFields pvtField.Function = vPvtFuncColls(lPvtFuncIdx) Next pvtField Regards. Kid. On Wed, Feb 15, 2012 at 13:27, Yan Novianto <yan.novia...@yahoo.com> wrote: Dear member milis excel, Bantu untuk data di bawah ini : Saya inginkan adalah merubah Value Field setting berubah dari COUNT menjadi SUM atau sebalinya secara MULTI / bersama. Saya coba dengan BLOK dari D2:H2 terus di atus menjadi SUM hasil yang ada adalah yang ada di D2 saja yang berubah menjadi SUM, dan jika di balik dari H2:D2 maka yang berubah adalah yang di H2 Jadi mana yang pertama kali di select itu yang bakal berubah. Nah mumet sudah deh J, Tolong di bantu cara supaya bisa merubah seperti yang saya inginkan bagaimana, karena kerja 1 -1 luama, data di samping kanan udah pada ngantri.. Terimakasih temans