wa'alaikumussalam wr wb
Hai Heru Adi,
Maksudnya array dalam pemrograman ya...
Kalau begitu, jangan kaitkan dengan cells dalam sebuah worksheet. Anggap
saja tidak ada Excel terlebih dulu.
Array adalah sebuah tipe data yang mampu menampung sebuah list.
*1. Array 1 dimensi,*
berarti sebuah list yang setiap itemnya tidak memiliki anak.
Contoh :
'cara deklarasi
dim sArray1Dim( 1 to 3 ) as string
berarti variabel sArray1Dim mampu menampung 3 item yang diletakkan mulai
item nomor 1 sampai item nomor 3. Nilai setiap item bertipe string (teks)
'cara isi nilai data ke dalam array
sarray1dim(1)="X" 'item nomor ke-1 berisi teks 'X'
sarray1dim(2)="Y"
sarray1dim(3)="Z"
jadi, cara mengisinya dengan disebut satu per satu. Jika nilai yang
dimasukkan ('X','Y','Z') memiliki pola cara pengambilan atau penyusunan
nilainya, maka loop dengan for next berdasar nomor item array bisa
digunakan. Banyak cara mengisi array 1 dimensi.
'cara baca nilai di dalam array, kemudian ditampilkan dalam msgbox
dim lNomorItemArray as long
for lNomorItemArray=1 to 3
msgbox sarray1dim( lNomorItemArray ) 'tampilkan kotak pesan,
dengan teks pesan berupa nilai yang ada dalam array item ke-sekian
next lNomorItemArray
Jadi bagian (1 to 3) di dalam deklarasi akan melakukan reservasi di RAM
untuk ruang nilai-nilai list atau array sebanyak 3 kamar.
Cara deklarasi :
dim sArray1Dim( 1 to 3 ) as string
sama dengan cara deklarasi berikut ini ketika baris pertama sebuah module
diberi option :
option base 1
public sub Array1ku()
dim sArray1Dim( 3 ) as string
'cara isi nilai data ke dalam array
sarray1dim(1)="X" 'item nomor ke-1 berisi teks 'X'
sarray1dim(2)="Y"
sarray1dim(3)="Z"
end sub
defaultnya, option base adalah 0 alias nomor item array dimulai dari angka
0. Lihat perbandingannya pada option base 0 berikut :
option base 0
public sub Array1ku()
dim sArray1Dim( 3 ) as string
'cara isi nilai data ke dalam array
sarray1dim(0)="X" 'item nomor ke-0 berisi teks 'X'
sarray1dim(1)="Y"
sarray1dim(2)="Z"
end sub
*2. Array 2 dimensi,*
berarti setiap item array dimensi ke-1 bisa punya daftar item anak, yaitu
di dimensi ke-2, tetapi nilai yang disimpan adalah nilai dimensi ke-2 nya.
Array yang lebih dari 1 dimensi juga disebut array multidimensi.
Contoh : (pengaruh option base bisa Anda pikirkan sendiri ya)
'cara deklarasi
dim sArray2Dim( 1 to 3 , 1 to 2 ) as string
artinya, sArray2Dim akan menampung data nilai anak milik 3 item Orang Tua
yang setiap item Orang Tua akan mampu menampung 2 item Anak.
'cara isi nilai ke dalam array 2 dimensi :
sArray2Dim( 1 , 1 ) = "Anak1" 'Anak1 adalah nama anak ke-1 dari
orang tua ke-1
sArray2Dim( 1 , 2 ) = "Anak2" 'Anak2 adalah nama anak ke-2 dari
orang tua ke-1
sArray2Dim( 2 , 1 ) = "Anak3" 'Anak3 adalah nama anak ke-1 dari
orang tua ke-2
sArray2Dim( 2 , 2 ) = "Anak4" 'Anak4 adalah nama anak ke-2 dari
orang tua ke-2
sArray2Dim( 3 , 1 ) = "Anak5" 'Anak5 adalah nama anak ke-1 dari
orang tua ke-3
sArray2Dim( 3 , 2 ) = "Anak6" 'Anak6 adalah nama anak ke-2 dari
orang tua ke-3
Terus, nama orang tuanya dimana ? Ya ditempat lain, seperti di sArray1Dim
di bahasan array 1 dimensi di atas sana.
Jadi, kalau sArray2Dim bekerja sama dengan sArray1Dim bisa mendapatkan
suatu data orang tua beserta anaknya.
Cara ambil nilainya :
dim lOrtu as long, lAnak as long
dim sOrtu as string, sAnak as string
for lortu=1 to 3 'di setiap ortu
sOrtu=sarray1dim(lortu)
for lAnak=1 to 2 'di setiap anak milik setiap ortu yang sedang
diproses (lortu)
sAnak=sarray2dim( lortu , lanak )
msgbox "Nama ortu : " & sOrtu & vbcrlf & "Nama Anak ke-" &
lanak & " : " & sanak
next lAnak
next lortu
nah... cara sArray1Dim dan sArray2Dim ini adalah cara termudah untuk
memahami apa itu array. Jadi, suatu array, sebenarnya setiap itemnya hanya
menyimpan 1 nilai.
Silakan diulang dan dimantabkan dulu...
Kalau sudah, baru beranjak ke hal berikut ini...
*** kalau pengen suatu array bisa menampung nilai nama orang tua dan nama
anak sekaligus bagaimana ?
Kalau dengan array 2 dimensi, ada 3 nama ortu yang masing-masing punya 2
anak, berarti ada 3 x 2 = 6 nama anak. Setiap nama anak akan memiliki
pasangan berupa nama ortu. Jadi, dimensi ke-1 memiliki item sebanyak jumlah
anak, dan dimensi ke-2 berisi item sebanyak jumlah kelompok yang ada.
Kelompok yang ada yaitu kelompok 1 berupa nama-nama ortu dan kelompok 2
berupa nama-nama anak.
Deklarasinya :
dim sArrayOrtuAnak( 1 to 6 , 1 to 2 ) as string
Cara isi :
sarrayortuanak( 1 , 1 ) = "X" 'X adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-1
sarrayortuanak( 1 , 2 ) ="Anak1" 'Anak1 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-1
sarrayortuanak( 2 , 1 ) = "X" 'X adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-2
sarrayortuanak( 2 , 2 ) ="Anak2" 'Anak2 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-2
sarrayortuanak( 3 , 1 ) = "Y" 'Y adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-3
sarrayortuanak( 3 , 2 ) ="Anak3" 'Anak3 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-3
sarrayortuanak( 4 , 1 ) = "Y" 'Y adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-4
sarrayortuanak( 4 , 2 ) ="Anak4" 'Anak4 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-4
sarrayortuanak( 5 , 1 ) = "Z" 'Z adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-5
sarrayortuanak( 5 , 2 ) ="Anak5" 'Anak5 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-5
sarrayortuanak( 6 , 1 ) = "Z" 'Z adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-6
sarrayortuanak( 6 , 2 ) ="Anak6" 'Anak6 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-6
Bingung kan membayangkannya.... Nah... biasanya terus disusun yang lebih
manusiawi menjadi begini :
Nomor baris Ortu Anak
1 X Anak1
2 X Anak2
3 Y Anak3
4 Y Anak4
5 Z Anak5
6 Z Anak6
lebih mudah dimengerti kalau berbentuk tabel dibanding berbentuk array
ya.... (gak setuju juga gpp)
Kalau array sArrayOrtuAnak diputar dimensinya bagaimana ?
Misal :
dim sArrayPutar( 1 to 2 , 1 to 6 ) as string
lalu diisi dengan :
sarrayortuanak( 1 , 1 ) = "X" 'X adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-1
sarrayortuanak( 2 , 1 ) ="Anak1" 'Anak1 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-1
sarrayortuanak( 1 , 2 ) = "X" 'X adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-2
sarrayortuanak( 2 , 2 ) ="Anak2" 'Anak2 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-2
sarrayortuanak( 1 , 3 ) = "Y" 'Y adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-3
sarrayortuanak( 2 , 3 ) ="Anak3" 'Anak3 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-3
sarrayortuanak( 1 , 4 ) = "Y" 'Y adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-4
sarrayortuanak( 2 , 4 ) ="Anak4" 'Anak4 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-4
sarrayortuanak( 1 , 5 ) = "Z" 'Z adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-5
sarrayortuanak( 2 , 5 ) ="Anak5" 'Anak5 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-5
sarrayortuanak( 1 , 6 ) = "Z" 'Z adalah anggota kelompok
ke-1, yaitu nama ortu dari anak ke-6
sarrayortuanak( 2 , 6 ) ="Anak6" 'Anak6 adalah anggota kelompok
ke-2, yaitu nama anak dari anak ke-6
Jadinya :
Nomor baris Item1 Item2 Item3 Item4 Item5
Item6
1 X X Y
Y Z Z
2 Anak1 Anak2 Anak3 Anak4
Anak5 Anak6
enakan mana melihat datanya kalau ada 1juta anak SD se indonesia yang
didaftar ke dalam array ?
kalau saya, suka yang bentuknya hasil deklarasi ( 1 to 6 , 1 to 2 ), tapi
mungkin saya rada gak normal menurut banyak pengguna Excel.
(untung pakai Excel itu tidak ada requirements hanya untuk orang normal)
Nah... deklarasi yang ( 1 to 6 , 1 to 2 ) akan menghasilkan tabel yang baik
yang berkaidah tabel database, dan pastinya mudah dikerjakan oleh suatu
array, karena setiap dimensi ke-1 array memiliki data yang utuh yang
dijabarkan di dalam dimensi ke-2 array.
*3. array 3 dimensi*
Ini berarti ada 1 dimensi lagi yang menyimpan suatu nilai.
Misal, dimensi ke-3 menyimpan nama pelajaran sekolah anak yang paling
disukai.
dim sArray3Dim( 1 to 3 , 1 to 2 , 1 to 1 ) as string
sArray3Dim( 1 , 1 , 1 ) = "Matematika" 'anak ke-1 dari ortu ke-1 suka
matematika
sArray3Dim( 1 , 2 , 1 ) = "PKn" 'anak ke-2 dari ortu ke-1
suka PKn
sArray3Dim( 2 , 1 , 1 ) = "IPA" 'anak ke-1 dari ortu ke-2
suka IPA
sArray3Dim( 2 , 2 , 1 ) = "IPA" 'anak ke-2 dari ortu ke-2
juga suka IPA
sArray3Dim( 3 , 1 , 1 ) = "Prakarya" 'anak ke-1 dari ortu ke-3 suka
Prakarya
sArray3Dim( 3 , 2 , 1 ) = "Seni" 'anak ke-2 dari ortu ke-3
juga suka Seni
nah... array seperti inipun bisa disusun menjadi array 2 dimensi menjadi :
Masih hanya ada 6 item, yaitu 3 ortu x 2 anak per ortu x 1 mapel per anak =
6 item
dengan data setiap anak membentuk 3 kelompok, yaitu :
> kelompok 1 adalah nama ortu,
> kelompok 2 adalah nama anak,
> kelompok 3 adalah nama pelajaran yang paling disukai
dim sArray3Kelompok( 1 to 6 , 1 to 3 ) as string
sArray3Kelompok( 1 , 1 ) ="X"
sArray3Kelompok( 1 , 2 ) ="Anak1"
sArray3Kelompok( 1 , 3 ) ="Matematika"
sArray3Kelompok( 2 , 1 ) ="X"
sArray3Kelompok( 2 , 2 ) ="Anak2"
sArray3Kelompok( 2 , 3 ) ="PKn"
dst
yang kalau disusun lebih manusiawi menjadi :
nomor baris ortu anak mapel
1 X Anak1 Matematika
2 X Anak2 PKn
dst
Udah ah...
itu tadi dasar array...
kalau menggunakan array multidimensi untuk urusan yang ruwet, saya ndak
mudeng.
btw, mau seruwet apapun urusannya, bermain dengan bentuk tabel yang baik
banyak kolom kelompok (kolom tabel) yang dijaga berkaidah tabel database
yang baik, akan lebih mudah dibayangkan. Tapi, pendapat ini biasanya gak
cocok dengan programmer yang suka coding. Tapi biarlah perbedaan
pendapatnya tetap ada dan pada sisi masing-masing.
So,
Punya data 17 dimensi ? Bisa disusun menjadi array 17 dimensi atau bentuk
tabel yang sejatinya adalah array 2 dimensi. Disesuaikan dengan kebutuhan
kenyamanan dalam memprosesnya saja.
Nanti masih ada array di dalam setiap item array. Namanya Jagged Array.
Contoh sederhananya, array daftar sheet beserta area range data yang berisi
nilai, seperti :
dim vJagged( 1 to 1 , 1 to 2 ) as variant
untuk wadah 1 sheet (1 to 1) yang setiap sheet ada daftar 2 area data (1
to 2), sedangkan setiap area data ada dimensi baris dan kolomnya
sJagged(1,1)=range("b2:c5").value 'sheet ke-1 area data ke-1 berisi
array nilai dari range b2:c5 alias 4 baris x 2 kolom
sJagged(1,2)=range("b4:b5").value 'sheet ke-1 area data ke-2 berisi
array nilai dari range b4:b5 alias 2 baris x 1 kolom
wassalamu'alaikum wr wb
Kid
2015-12-14 20:02 GMT+07:00 Heru Adi [email protected] [belajar-excel] <
[email protected]>:
>
>
> Assalamu'alaikum.
> Selamat sore rekan-rekan milis excel .
> Saya mau bertanya apakah fungsi dan kegunaan dari array dua dimensi /
> multidimensi ?
> Mohon diberi contoh studi kasus yang menggunakan konsep array dua dimensi
> / multidimensi ini.
> Sebelumnya saya ucapkan terimakasih kepada rekan-rekan atas jawabannya.
> Saya sangat ingin tahu contoh penerapan dari array dua dimensi /
> multidimensi ini.
>
> Rgds,
>
> Heru Adi S
>
> Dikirim dari Yahoo Mail pada Android
> <https://overview.mail.yahoo.com/mobile/?.src=Android>
>
>
>