pak Lukman,

untuk yang SumProduct masih menjadi PR untuk Jan, karena formula yang
digunakan adalah SumProduct jalan sesat xixixixi :D (maksudnya cara
penulisannya menyimpang dari syntax yang asli, cara penulisan seperti itu
adalah hasil pengembangan dari para pengguna Excel dan berjalan dengan baik
di worksheet, Jan belum pernah menggunakannya di VBA.

untuk yang Index
'Range("S16") = Application.WorksheetFunction.Index(Range(Range("G2"),
Range("L34")), 17, 3, 0)
coba pak Lukman pindahkan cara penulisan tersebut ke formula bar di
worksheet, nanti pak Lukman akan mengetahui di mana letak salahnya

begitu pula untuk yang VLookUp silakan dipindah ke formula bar di
worksheet, maka pak Lukman akan tahu letak salahnya.
'Range("S17") = Application.WorksheetFunction.VLookup(Range("N16"),
(Range(Range("F2"), Range("F34"))), 4, False)
'Range("T17") = Application.WorksheetFunction.VLookup(Range("N16"),
(Sum_T), 4, False)
'Range("U17") = Application.WorksheetFunction.VLookup(Range("N16"),
Range(Sum_T), 4, False)

perhatikan syntax penulisan masing-masing formula sebelum dipindahkan ke
VBA.

Intinya adalah, sebelum memindahkan formula ke VBA, formula tersebut harus
dicoba di worksheet dan menghasilkan nilai yang sesuai, jika masih muncul
error maka tidak akan berjalan dengan baik di VBA.

best regard,

Jan Raisin


Pada 19 November 2012 13:33, lkm jktind <[email protected]> menulis:

> **
>
>
> Pak Jan.
>
> Masih belum bisa ?
> Yang berwarna biru.
>
>
>
> Option Explicit
> Sub coba_function()
>     Dim Sum_T As Range
>     Dim Sum_J As Range
>     Dim Sum_N As Range
>
>     Set Sum_T = Range("F2:F34")
>     Set Sum_J = Range("G1:L1")
>     Set Sum_N = Range("G2:L34")
>
> Range("R3").Formula = "=I2+I3"
> Range("R4").Formula = "=SUM(I2:I34)"
> Range("R15").Formula = "=SUMPRODUCT((F2:F34=N16)*(G1:L1=O16)*(G2:L34))"
> Range("R16").Formula =
> "=INDEX($G$2:$M$34,MATCH($N$16,$F$2:$F$34,0),MATCH($O$16,$G$1:$M$1,0))"
> Range("R17").Formula =
> "=VLOOKUP($N$16,$F$2:$L$34,MATCH($O$16,$F$1:$L$1,0),FALSE)"
>
> Range("U3").Value = Evaluate("=I2+I3")
> Range("U4").Value = Evaluate("=SUM(I2:I34)")
> Range("U15").Value =
> Evaluate("=SUMPRODUCT((F2:F34=N16)*(G1:L1=O16)*(G2:L34))")
> Range("U16").Value =
> Evaluate("=INDEX($G$2:$M$34,MATCH($N$16,$F$2:$F$34,0),MATCH($O$16,$G$1:$M$1,0))")
> Range("U17").Value =
> Evaluate("=VLOOKUP($N$16,$F$2:$L$34,MATCH($O$16,$F$1:$L$1,0),FALSE)")
>
> Range("S4") = Application.WorksheetFunction.Sum(Range(Range("I2"),
> Range("I34")))
> Range("T4") = Application.WorksheetFunction.Sum(Sum_N)
>
> 'Range("S15") =
> Application.WorksheetFunction.SumProduct((Range(Range("F2"), Range("F34"))
> = Range("N16")) * (Range(Range("G1"), Range("L1")) = Range("O16")) *
> Range(Range("G2"), Range("L34")))
> 'Range("T15") = Application.WorksheetFunction.SumProduct((Sum_T =
> Range("N16")) * (Sum_J = Range("O16")) * (Sum_N))
> 'Range("U15") = Application.WorksheetFunction.SumProduct((Range(Sum_T) =
> Range("N16")) * (Range(Sum_J) = Range("O16")) * (Range(Sum_N)))
> 'Range("S16") = Application.WorksheetFunction.Index(Range(Range("G2"),
> Range("L34")), 17, 3, 0)
> 'Range("T16") = Application.WorksheetFunction.Index(
> 'Range("U16") = Application.WorksheetFunction.Index(
> 'Range("S17") = Application.WorksheetFunction.VLookup(Range("N16"),
> (Range(Range("F2"), Range("F34"))), 4, False)
> 'Range("T17") = Application.WorksheetFunction.VLookup(Range("N16"),
> (Sum_T), 4, False)
> 'Range("U17") = Application.WorksheetFunction.VLookup(Range("N16"),
> Range(Sum_T), 4, False)
>
> Range("S18") = Application.WorksheetFunction.Match(Range("N16"),
> Range(Range("F2"), Range("F34")), 0)
> Range("T18") = Application.WorksheetFunction.Match(Range("O16"),
> Range(Range("G1"), Range("L1")), 0)
>
> End Sub
>
> Salam
>
> Lukman
>
>
>
> 2012/11/19 Jan Raisin <[email protected]>
>
>> **
>>
>>
>> Dear BeExceler,
>>
>> cara penulisan formula dari worksheet ke VBA dapat dilakukan dengan
>> cara-cara seperti berikut:
>>
>> 1. Menggunakan fungsi Evaluate
>>    contoh: Cells(1,1).value = Evaluate("
>> =ini_formula_panjang_dari_worksheet_yang_dipindah_ke_VBA")
>>    perhatikan cara penulisannya
>>    a. formula dari worksheet diapit dengan tanda buka_kurung dan
>> kutip_dua, lalu ditutup dengan tanda kutip_dua dan tutup_kurung
>>    b. formula dari worksheet ditulis mulai dari tanda sama_dengan sampai
>> akhir
>>    c. semua tanda pemisah harus menggunakan koma, jika awalnya formula di
>> tulis di worksheet dengan menggunakan tanda titik_koma sebagai pemisah
>> antara satu bagian dengan bagian yang lain (asumsi regional setting adalah
>> Indonesia) dan dapat berjalan dengan baik di worksheet, maka jika tanda
>> pemisah tidak diganti dari titik_koma menjadi koma maka akan muncul error.
>>
>> 2. Memanfaatkan fungsi Application.WorkSheetFunction.nama_fungsinya
>>     catatan: Tidak semua fungsi dari worksheet dapat digunakan di dalam
>> VBA, untuk mengetahui fungsi-fungsi yang dapat dipanggil bisa dengan cara
>> menulis tanda titik setelah syntax Application.WorksheetsFunction
>>     untuk dapat menggunakan cara yang kedua ini, anda harus mengetahui
>> terlebih dahulu bagaimana cara menunjuk suatu cell dan suatu area (range)
>> di dalam workheet
>>     Berikut adalah beberapa cara menunjuk suatu cell  dan suatu area di
>> dalam worksheet
>>     a. menunjuk cell menggunakan fungsi Cells
>>        syntax-nya adalah Cells(nomer_baris , nomer_kolom)
>>        contoh: Cells( 2, 3) artinya adalah menunjuk kepada cell di baris
>> 2 dan kolom 3 atau disebut cell C3
>>        cara tersebut hanya berlaku untuk menunjuk pada cell yang
>> tereletak pada workbook yang aktif dan worksheet yang aktif
>>        jika cell yang ingin ditunjuk terletak pada workbook lain dan/atau
>> wroksheet lain maka cara menunjuknya selalu melalui hierarki yang lebih
>> tinggi
>>        contoh: Workbooks("DataPenjualan2012").WorkSheets("Database").Cells(2
>> , 3)
>>    b. Menunjuk cell dan range menggunakan fungsi Range
>>        1). Menunjuk sebuah cell
>>             contoh: Range("A2") artinya menunjuk kepada sebuah cell yang
>> bernama cell A2
>>        2). Menunjuk beberapa buah cell yang berhimpitan
>>             contoh: Range("A2:C3") artinya menunjuk kepada beberapa buah
>> cell mulai dari A2 sampai C3, berarti yang ditunjuka adalah cell A2, A3,
>> B2, B3, C2, dan C3
>>        3). Menunjuk beberapa cell yang tidak berhimpitan
>>             contoh: Range("A2, C3, E5") artinya menunjuk kepada cell A2,
>> C3, dan E5 yang letaknya tidak saling berhimpit
>>        4). Menunjuk sebuah kolom
>>             contoh: Range ("A:A") artinya menunjuk seluruh cell di dalam
>> kolom A
>>        5). Menunjuk beberapa kolom yang saling berhimpit
>>             contoh: Range ("A:E") artinya menunjuk seluruh cell mulai
>> dari kolom A sampai E
>>        6). Menunjuk beberapa kolom yang tidak saling berhimpit
>>             contoh: Range("A:A, C:C, E:E") artinya menunjuk seluruh cell
>> di dalam kolom A, kolom C, dan kolom E
>>             selain dengan menunjuk langsung alamat cell atau range,
>> penunjukan juga bisa dilakukan dengan memberi nama kepada range yang akan
>> dilipih
>>             contoh:
>>                     Option Explicit
>>             Sub Tes()
>>                  Dim Pilihan As Range
>>                  Set Pilihan = Range("A:A, C:C, E:E")
>>                  Pilihan.Select
>>             End Sub
>>       7). Menunjuk suatu area / range dengan syntax baku dari fungsi Range
>>            syntax dari Range adalah Range(alamat_cell_awal ,
>> alamat_cell_akhir)
>>            contoh: Range(Range("A1") , Range("E5"))
>>            atau
>>            Range(Cells(1,1) , Cells(5,5))
>>            kedua script di atas akan menunjuk kepada suatu range mulai
>> dari cell A1 sampai dengan cell E5
>>
>> Setelah sedikit dongeng dari Jan, sekarang Jan akan bertanya ke pak
>> Lukman, menurut pak Lukman mana yang lebih pas untuk formula yang akan
>> digunakan oleh pak Lukman?
>>
>> silakan dicoba dahulu, jika ada kesulitan bisa dishare lagi ke sini
>>
>> Best Regard,
>>
>> Miss Jan Raisin
>>
>>
>> 2012/11/17 lkm jktind <[email protected]>
>>
>>> **
>>>
>>>
>>> Bagaimana cara penulisannya di macro excel :
>>> dengan contoh di bawah ini :
>>>
>>> Sumproduct(("$A$2:$A$36000"=$A25)*(("$D$1:$AB$1=F$)*($D$2:$AB$36000)
>>> Index($D$2:$AB$36000;match("$A$2:$A$36000";$A25); match("$D$1:$AB$1;F$))
>>> Hloopup= (F$1;$D$1:$D$3600;Match($A$1:$A$3600;$A25);0)
>>>
>>>
>>> Cells(r,5) = application.worksheetfunction.sumproduct(
>>> Cells(r,6) = application.worksheetfunction.Index(
>>> Cells(r,7) = application.worksheetfunction.Hlookup(
>>>
>>>
>>>
>>> Salam
>>>
>>>
>>> Lukman.
>>>
>>>
>>>
>>> nb : maaf nga begitu bisa bahasa inggris.
>>>
>>>
>>
>  
>

Kirim email ke