Re: [belajar-excel] VBA evaluate untuk hasil dalam variabel array?
saya coba jawab mas Kid, (semoga juga gak salah maksudnya) maksudnya seperti inikah, Misalkan contohnya =SMALL(IF($A$1:$A$50,2,0),1) mau VBA-kan ada 2 cara di sini, yaitu: Cara 1 === Sub abc() Dim x x = Sheets(Sheet1).Range(A1:A5).Address [C1] = Evaluate(SMALL(IF( x 0 ,2,0),1)) MsgBox SMALL(IF( x 0 ,2,0),1) End Sub === Cara2 (lebih singkat) === Sub def() [D1].FormulaArray = =SMALL(IF($A$1:$A$50,2,0),1) End Sub === semoga bermanfaat From: Mr. Kid mr..nm...@gmail.com To: belajar-excel@yahoogroups.com Sent: Wed, December 23, 2009 2:48:39 PM Subject: [belajar-excel] VBA evaluate untuk hasil dalam variabel array? Dear All, Bagaimanakah cara menggunakan Evaluate() dalam VBA yang bisa hasilnya berupa array disimpan dalam variabel array? Mungkinkah tanpa menggunakan loop? Contohnya untuk formula kondang Small(IF()) atau yang semacamnya. Bisakah langsung : dim vHasil as Variant vHasil=Evaluate(=small(if(bla- bla-bla), urutan) Warm Regards. Kid.
Re: [belajar-excel] VBA evaluate untuk hasil dalam variabel array?
Terima kasih Pak Anton. Boleh dong tanya lagi untuk semua juga ya. Kalau angka 1 dalam SMALL(IF( x 0 ,2,0),1) akan diganti Row($1:$5) dan [C1] diganti dengan vHasil yang ber-type Variant, sebaiknya bagaimana ya? Karena yang digunakan sekarang (dikonversi ke koding Pak Anton) jadi : Range(c1:c5)=evaluate(SMALL(IF( x 0 ,Row($1:$5)),Row($1:$5)) kok hasilnya sama dengan SMALL(IF( x 0 ,2,0),1) Target hasil : seluruh hasil array formula melalui Evaluate() yang berupa array langsung masuk ke variabel vHasil, sehingga vHasil menjadi variant Array juga. Latar belakang : Selama ini digunakan loop jika elemen array hasil pemilahan (small if pada contoh kan juga formula pemilah data ya) tidak lebih dari 400 elemen. (angka 400 adalah hasil hitung kancing satu tim... hahahaha... tapi ini beneran..) Untuk hasil elemen lebih dari itu, digunakan SQL dengan left join-nya (di excel biasa disebut lookup). Masalah : Diminta dengan metode lain yang bisa langsung men-select seluruh areas, hingga bisa ditracking datanya ke datasource (seperti klik kanan show detail pada pivot table, tapi dilakukan terhadap tabel agregat). Ide : - Jika bisa mendapatkan array melalui sebuah formula pemilah, maka hal itu akan membuka jalan untuk proses selanjutnya tanpa membuat sebuah koneksi data lagi. Lalu mencoba memanfaatkan evaluate(). Karena memasang formula pada satu kolom bantu menguras resources berulang-kali ketika calculation dilakukan ( manual dengan Range(helper).calculate ) Kebingungan : Bagaimana caranya ya.. mungkin terlalu naif jika pakai Evaluate kali ya. Versi excel : xl2007 -- suasana akhir tahun bisa diakhiri dengan cerita ruwet -- :( Bantuan ide apa saja sangat berarti. Kid. 2009/12/23 anton suryadi summon...@yahoo.com saya coba jawab mas Kid, (semoga juga gak salah maksudnya) maksudnya seperti inikah, Misalkan contohnya =SMALL(IF($A$1:$A$50,2,0),1) mau VBA-kan ada 2 cara di sini, yaitu: Cara 1 === Sub abc() Dim x x = Sheets(Sheet1).Range(A1:A5).Address [C1] = Evaluate(SMALL(IF( x 0 ,2,0),1)) MsgBox SMALL(IF( x 0 ,2,0),1) End Sub === Cara2 (lebih singkat) === Sub def() [D1].FormulaArray = =SMALL(IF($A$1:$A$50,2,0),1) End Sub === semoga bermanfaat -- *From:* Mr. Kid mr.nm...@gmail.com *To:* belajar-excel@yahoogroups.com *Sent:* Wed, December 23, 2009 2:48:39 PM *Subject:* [belajar-excel] VBA evaluate untuk hasil dalam variabel array? Dear All, Bagaimanakah cara menggunakan Evaluate() dalam VBA yang bisa hasilnya berupa array disimpan dalam variabel array? Mungkinkah tanpa menggunakan loop? Contohnya untuk formula kondang Small(IF()) atau yang semacamnya. Bisakah langsung : dim vHasil as Variant vHasil=Evaluate(=small(if(bla- bla-bla), urutan) Warm Regards. Kid.
Re: [belajar-excel] VBA evaluate untuk hasil dalam variabel array?
Sejauh yang saya tau dalam penggunaan SMALL melalui Evaluate DAN di-Range-kan array-nya, hal itu bisa dilakukan dengan Loop (mis: For Next), kecuali hal yg lebih simpel seperti IF bisa dilakukan tanpa Loop apabila menggunakan FormulaArray lebih simpel, Range(C1:C5).FormulaArray = =SMALL(IF(A1:A50,ROW(1:5),0),ROW(1:5)) harus menggunakan Evaluate? Sub eVaLup() [C1:C5] = Evaluate(=IF(A1:A52,ROW(1:5),0)) For i = 1 To 5 Range(D i) = Evaluate(=SMALL($C$1:$C$5, i )) Next i End Sub Small, Evaluate, Array to Range, tanpa Loop? [C1:C5] = Evaluate(=IF(A1:A52,ROW(1:5),0)) bisa tp gagal bila diterapkan pada formula SMALL, Small dengan Evaluate, array di-range kan, tanpa Loop, ilmu saya belum nyampe :D Mungkin rekan [b-e] yang yang lain punya pandangan lain semoga bermanfaat From: Mr. Kid mr.nm...@gmail.com To: belajar-excel@yahoogroups.com Sent: Wed, December 23, 2009 11:20:32 PM Subject: Re: [belajar-excel] VBA evaluate untuk hasil dalam variabel array? Terima kasih Pak Anton. Boleh dong tanya lagi untuk semua juga ya. Kalau angka 1 dalam SMALL(IF( x 0 ,2,0),1) akan diganti Row($1:$5) dan [C1] diganti dengan vHasil yang ber-type Variant, sebaiknya bagaimana ya? Karena yang digunakan sekarang (dikonversi ke koding Pak Anton) jadi : Range(c1:c5)=evaluate(SMALL(IF( x 0 ,Row($1:$5)),Row($1:$5) ) kok hasilnya sama dengan SMALL(IF( x 0 ,2,0),1) Target hasil : seluruh hasil array formula melalui Evaluate() yang berupa array langsung masuk ke variabel vHasil, sehingga vHasil menjadi variant Array juga. Latar belakang : Selama ini digunakan loop jika elemen array hasil pemilahan (small if pada contoh kan juga formula pemilah data ya) tidak lebih dari 400 elemen. (angka 400 adalah hasil hitung kancing satu tim... hahahaha... tapi ini beneran..) Untuk hasil elemen lebih dari itu, digunakan SQL dengan left join-nya (di excel biasa disebut lookup). Masalah : Diminta dengan metode lain yang bisa langsung men-select seluruh areas, hingga bisa ditracking datanya ke datasource (seperti klik kanan show detail pada pivot table, tapi dilakukan terhadap tabel agregat). Ide : - Jika bisa mendapatkan array melalui sebuah formula pemilah, maka hal itu akan membuka jalan untuk proses selanjutnya tanpa membuat sebuah koneksi data lagi. Lalu mencoba memanfaatkan evaluate(). Karena memasang formula pada satu kolom bantu menguras resources berulang-kali ketika calculation dilakukan ( manual dengan Range(helper) .calculate ) Kebingungan : Bagaimana caranya ya.. mungkin terlalu naif jika pakai Evaluate kali ya. Versi excel : xl2007 -- suasana akhir tahun bisa diakhiri dengan cerita ruwet -- :( Bantuan ide apa saja sangat berarti. Kid. 2009/12/23 anton suryadi summon...@yahoo. com saya coba jawab mas Kid, (semoga juga gak salah maksudnya) maksudnya seperti inikah, Misalkan contohnya =SMALL(IF($A$ 1:$A$50,2,0),1) mau VBA-kan ada 2 cara di sini, yaitu: Cara 1 === Sub abc() Dim x x = Sheets(Sheet1).Range(A1:A5).Address [C1] = Evaluate(SMALL(IF( x 0 ,2,0),1)) MsgBox SMALL(IF( x 0 ,2,0),1) End Sub === Cara2 (lebih singkat) === Sub def() [D1].FormulaArray = =SMALL(IF($A$ 1:$A$50,2,0),1) End Sub === semoga bermanfaat From: Mr. Kid mr.nm...@gmail. com To: belajar-excel@ yahoogroups. com Sent: Wed, December 23, 2009 2:48:39 PM Subject: [belajar-excel] VBA evaluate untuk hasil dalam variabel array? Dear All, Bagaimanakah cara menggunakan Evaluate() dalam VBA yang bisa hasilnya berupa array disimpan dalam variabel array? Mungkinkah tanpa menggunakan loop? Contohnya untuk formula kondang Small(IF()) atau yang semacamnya. Bisakah langsung : dim vHasil as Variant vHasil=Evaluate(=small(if(bla- bla-bla), urutan) Warm Regards. Kid.