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
' 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"
Set dReport = Sheets("Report"
dReport(0, 1) = UCase(dSumber(
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
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
Set dSumber = Sheets("Result"
Application.
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
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)
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
'------------------
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
From: Mr. Kid
To: XL-mania@yahoogroup
Sent: Wednesday, February 17, 2010 10:58 AM
Subject: Re: ]] XL-mania [[ remove filter
---- ---
2010/2/16 ZASLI AFANDI B
--------
Tapi yang menjadi masalah saya adalah kriteria data yang saya ingin buang itu berubah2.
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 |
+-------------------------------------------------------------------+
| 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:
Postar um comentário