Pak Jan Raisin.
Apakah maksud bapak . sumproduct, index dan vlookup tidak dapat di gunakan
VBA ?
hasilnya sama .
di kolom : Q : ada formula di work sheet.
di kolom : R . .formula = "= xxxxxxxx"
di kolom : V . .Value = Evaluate("=xxxxxxxx")
dibawah ini error.
di kolom : S . application.worksheetfunction.
di kolom : T . application.worksheetfunction.
di kolom : U . application.worksheetfunction.
terima kasih.
Salam
Lukman
2012/11/19 Jan Raisin <[email protected]>
> **
>
>
> pak Lukman,
>
> untuk yang SumProduct, ini Jan kutip dari help-nya VBA
>
> - The array arguments must have the same dimensions. If they do not,
> SUMPRODUCT returns the #VALUE! error value.
>
> sebelumnya Jan telah sebutkan bahwa formula SumProduct yang dipergunakan
> oleh pak Lukman adalah SumProduct jalan sesat (kalo mr Kid bilang itu
> SumProduct jalan lurus, hanya saja yang mempelajarinya bisa tersesat
> xixixixi :D, kini Jan paham maksud dari mr Kid tersebut :D)
>
> kenapa disebut SumProduct jalan sesat? karena cara penulisannya menyimpang
> dari Syntaxt yang seharusnya, jadi error muncul karena:
> 1. cara penulisan menyimpang dari syntax, karena itu adalah pengembangan
> dari para pengguna Excel, yang dapat berjalan di worksheet tetapi belum
> tentu dapat berjalan di VBA, dari sini akan muncul debug
> 2. dimensi array yang digunakan berbeda antara 1 kriteria dengan kriteria
> yang lain, dari sini akan muncul error
>
> solusi lain untuk kasus ini adalah penggunaan fungsi Sum atau yang sejenis
> dengan melakukan pengujian terhadap semua cell dalam data (diperlukan Loop
> dalam kasus ini)
>
> yang harus diingat adalah, bahwa tidak semua fungsi di worksheet dapat
> digunakan di VBA
>
> cmmiw (colek mi if ayem wrong)
>
> -miss Jan Raisin-
>
> Pada 19 November 2012 15:04, Jan Raisin <[email protected]>menulis:
>
> 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.
>>>>>
>>>>>
>>>>
>>>
>>
>
>