Tecnologia, programação e muito Visual FoxPro.

quarta-feira, 31 de agosto de 2011

Re: ]] XL-mania [[ Fungsi Macro Penjumlah

 

Menurut pendapat saya, di VBA, secara murni tidak ada fungsi SUM, SUMIF, 

SUMPRODUCT maupun "bangsa SUM" lainnya..
Jadi biasanya untuk mempercepat program, pemakai VBA Excel meminjam
fungsi milik workshseet (WorksheetFunction);  Misalnya 
Cell(16,4) = WorksheetFunction.SUMIF(RangeYgDiSum,Kriteria,RangeKriteria)

Tanpa meminjam fungsi milik Excel; jangan lantas dikira bawa VBA tidak dapat 
menjumlah (SUM, SUMIF, SUMPRODUCT dan bangsa SUM lainnya, jika ada), 
karena VBA punya struktur LOOP di mana setiap step kita dapat menumpuk tambah
sekumpulan nilai yg merujuk ke cell yg berurut-urutan ke sebuah variable.

Misal, terhadap RANGE dari cell A1 sampai cell A1000 (berisi bilangan);
di worksheet kita dapat menjumlah dengan SUM(A1:A1000)
di VBA kita menjumlah dng WorksheetFunction.SUM(Range("A1:A1000")),
Bisa juga dengan menuliskan Text Formula ke cell, atau dengan menumpuk_tambah 
dengan Loop seperti disebutkan di atas.

for R = 1 to 1000
   HasilSum = HasilSum + Range("A" & i).Value
next R
Range("A1001").value = HasilSum

Pertanyaan yg diajukan oleh pak Loheng bukan hanya sekedar Menjumlah, tetapi 
MENJUMLAH BERSYARAT.
Syarat bukan sesuatu yg mengerikan, karena, di VBA,  tidak lebih dari sesuatu yg 
dengan mudah dapat diexpresikan dengan struktur If - Then

Langsung saja.. makronya (tanpa meminjam Fungsi milik worksheet dan
tanpa membuat TEXT matematik / ataupun text fungsi worksheet yg kemudian 
di "Evaluate");  kita kira sbb

'-----------------------------------
Sub MenjumlahBersyarat()
   '== 1 sep 2011 / Hapsari ==
   '== courtesy of mbak siti==
   ----------------------------
   Dim dTabel As Range
   Dim dHasil As Range
   Dim dSumIf As Double ' Ingat bahwa nama Variable adalah sekedar NAMA
   Dim i As Long, n As Long
   
   Set dTabel = Range("G3").CurrentRegion
   Set dHasil = Range("B15").CurrentRegion
   ' Loop Luar
   For i = 2 To dHasil.Rows.Count
      dSumIf = 0
      ' Loop Dalam
      For n = 2 To dTabel.Rows.Count
         If dTabel(n, 2) = dHasil(i, 2) Then  '<<-- bersyarat
            dSumIf = dSumIf + dTabel(n, 3)    ' <<- tumpukan jumlah
         End If
      Next n
      '  --menulis hasil ke cell setiap selesai 1 X Loop-Dalam --
      If Not dSumIf = 0 Then dHasil(i, 3) = dSumIf 
   Next i
End Sub
'-----------------------------------

Di workbook contoh terlampir, makro sudah direpresentasikan oleh TOMBOL
Mohon maaf jika ternyata bukan itu yg dimaksudkan




2011/8/29 Loheng Stone <lohengstone@yahoo.com>
Apa fungsi macro yang dipakai untuk menjumlahkan Qty berdasarkan part.id  
Contoh terlampir
Terima kasih..

__._,_.___
Recent Activity:
+-:: XL-mania ::::::::::::::::::::----------------------------------+
| selamat idul fitri, mohon maaf lahir dan batin...                 |
| www.linkedin.com/company/xl-mania                                 |
| ayo pesan buku "mengapa boss benci chart anda"  :D :D :D          |
+-------------------------------------------------------------------+
| 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
A bad score is 598. A bad idea is not checking yours, at freecreditscore.com.
.

__,_._,___

Nenhum comentário:

Arquivo do blog