Tecnologia, programação e muito Visual FoxPro.

domingo, 21 de fevereiro de 2010

Re: ]] XL-mania [[ remove filter

 

Ini sekedar meneruskan idea yg disodorkan oleh mas Kid 
(=memberi kolom helper pada tabel data) yg sungguh efektip dan efisien ....
karena rumusnya menghasilkan isi yg dinamis sesuai Kriteria yg dipilih
di sheet "Kriteria Filter"
 
Sebagai variasi, kita akan menuliskan rumus lain
=COUNTIF('Kriteria Filter'!$A$3:$A$12,Data!C2)>0
rumus ini masih se-keluarga dengan rumus dari mas Kid kemarin.
Nama Kelas Alamat Nilai ToBeRemoved
Andi 1 Kalibata 9 FALSE
Budi 1 K. Rambutan 10 FALSE
Charlie 2 Grogol 6 TRUE
Danu 2 Slipi 7 TRUE
Widi 3 (tiada data) 6 TRUE
Toni 1 K. Rambutan 7 FALSE
Ahmad 2 Kalibata 8 FALSE
Badu 4 (tiada data) 10 TRUE
Intan 5 Slipi 6 TRUE
Eren 3 K. Rambutan 7 FALSE
Nana 3 Kalibata 9 FALSE
 
Menurut pendapatku, dengan adanya kolom Helper, tabel data tsb tidak perlu
dipasang AutoFilter. Karena penampakan Hasil yg di-inginkan oleh pak Zasli
bukanlah di sheet tsb, melainkan di sheet RESULT & Sheet REPORT
 
Dengan formula, kita dapat membuat data TABEL HASIL di sheet Result;
artinya Tabel Hasil hanya akan mencantumkan records yg TIDAK MENGANDUNG
ALAMAT yg memenuhi Kriteria-Kriteria (Daftar Kriteria di Sheet "Kriteria Filter")
 
Kriteria Filter
Alamat (changeable)
Slipi
Kalibata
(tiada data)
 
(Mungkin proses ini dapat kita sebut sbg "DeFiltering")
Di sana kita akan memanfatkan ArrayFormula "RecNo-Helper" seperti biasanya
=SMALL(IF(NOT(Data!E2:E12),ROW(1:11)),ROW(1:11))
 
Lalu..  di sheet REPORT kita dapat menyusun SUMMARY / REKAPITULASI
mungkin judulnya : "Jumlah Nilai Per Alamat Per Kelas"
 
ALAMAT
KELAS 1
KELAS 2
KELAS 3
Grogol 0 6 0
K. Rambutan 17 0 7
 
Karena pak Zasli sudah mengisyaratkan tidak ingin menggunakan SUMPRODUCT
(yg jika menghandle data ribuan records memang akan memperburuk kinerja worksheet)
maka kita usulkan Report ini digenerated dengan sebuah makro.
(ini hanya mengikuti kesenangan diriku-sendiri saja yaitu lebih nikmat nulis code
daripada ceklak-ceklik mengatur Pivot Tabel, padahal Pivot Tabel lebih OKE)
 
Kolom_KELAS tentunya tidak terpaku hanya 3 kolom dan Baris_ALAMAT juga jangan
hanya terpaku 2 baris saja.
Makro hendaknya mampu mengenali Tabel Data; mencari unique-List of KELAS dan
juga UniqueList of ALAMAT (yg sudah difilter tadi); selain itu juga harus dapat
menirukan algoritma kalkulasi yg harusnya dikerjakan oleh SUMPRODUCT
di mana pola formulanya mencari jumlah nilai berdasarkan dua kriteria (Kelas & Alamat).
Diharapkan jika data diganti dengan factual data (yg katanya ribuan), makro tetap jalan
seperti ketika hanya dibebani data contoh saat ini.
 
Mungkin, mungkin lho ya..., begitulah ceritak yg tersirat di dalam email Pak Zasli tgl 16 Feb.
 
Workbook terlampir mencoba mendekati keinginan tsb; tidak peduli apakah hasilnya
salah ataukah benar...
 
Sub Report1()
   ' Jumlah-Nilai per alamat per kelas
   ' ( nilai kok dijumlah buat apa ya..?)
   ' siti Vi  / 17 feb 2010
   '--------------------------------------

   Dim dSumber As Range, dReport As Range
   Dim ArCri(), ArKls(), SbHeight As Long, SumNilai As Double
   Dim n As Long, r As Long, i As Long, c As Integer

   Set dSumber = Sheets("Result").Cells(2, 1).CurrentRegion
   Set dReport = Sheets("Report").Cells(4, 1)
   dReport(0, 1) = UCase(dSumber(1, 3)): i = 1
   Do While Len(dSumber(i + 1, 1)) > 0
      ReDim Preserve ArCri(1 To i): ArCri(i) = dSumber(i + 1, 3)
      ReDim Preserve ArKls(1 To i): ArKls(i) = dSumber(i + 1, 2)
      SbHeight = i:   i = i + 1
   Loop
   ArCri = LOUV(ArCri): ArKls = LOUV(ArKls)
   Set dSumber = Sheets("Result").Cells(2, 1)
   Application.Calculation = xlCalculationManual
   For c = 1 To UBound(ArKls)
      dReport(0, c + 1) = "KELAS " + ArKls(c)
      For r = 1 To UBound(ArCri)
         dReport(r, 1) = ArCri(r)
         For n = 1 To SbHeight
            If dSumber(n, 2) = CInt(ArKls(c)) Then
               If dSumber(n, 3) = ArCri(r) _
               Then SumNilai = SumNilai# + dSumber(n, 4)
            End If
         Next n
         dReport(r, c + 1) = SumNilai:  SumNilai = 0
      Next r
   Next c
   Application.Calculation = xlCalculationAutomatic
End Sub
'------------------
 
bluewater, 17 Feb 2010
 
 

----- Original Message -----
From: Mr. Kid
To: XL-mania@yahoogroups.com
Sent: Wednesday, February 17, 2010 10:58 AM
Subject: Re: ]] XL-mania [[ remove filter
---- ---

2010/2/16 ZASLI AFANDI B
zasli_e04@yahoo.co.id
--------
Tapi yang menjadi masalah saya adalah kriteria data yang saya ingin buang itu berubah2.
Saya tidak menggunakan tanda <> untuk hanya mengambil data yang saya gunakan
karena sedekat yang saya ketahui kalo filter itu hanya ada criteria1 dan criteria2.
2. Saya ingin menghitung dengan menggunakan sumproduct (seperti pada lampiran).
Saya tidak tau gimana cara jelaskan disini...
--------
 

__._,_.___
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| malu bertanya kerja manual... kebanyakan nanya (malas lihat post  |
| lama, nanya itu2 aja, males liat help) capeee deh... :( :( :(     | 
| http://www.facebook.com/group.php?gid=37671048001&ref=mf          |
+-------------------------------------------------------------------+
| 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              |
+-------------------------------------------------------------------+
.

__,_._,___

Nenhum comentário:

Arquivo do blog