Re: [belajar-excel] VBA evaluate untuk hasil dalam variabel array?

2009-12-23 Terurut Topik anton suryadi

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?

2009-12-23 Terurut Topik Mr. Kid
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?

2009-12-23 Terurut Topik anton suryadi

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.