yo --- Mods --- Maksudnya apa ya ? Moga-moga ada penjelasan yang lebih baik. ------------
________________________________ Dari: jkssxls Sudarsono <[email protected]> Kepada: Belajar-Excel Yahoo Groups <[email protected]> Dikirim: Sabtu, 29 Oktober 2011 14:52 Judul: RE: [belajar-excel] Menyisipkan data di kolom sebelah Pelajaran berlanjut ( seperti sekolah saja ya... ) : ada data misal di range c7:c11 : a b c d e bila kita gunakan rumus : {=INDEX(C7:C11, ROW(2:3) )} hasilnya di range F7:F9 : b c #N/A bila kita gunakan rumus : { =INDEX(C7:C11, COLUMN(2:3) ) } hasilnya di I7:K7 : a b c Jadi penggunaan Row sbg index dapat dihandalkan dibandingkan Column fungsi dibawah ini adalah mengambil data sesuai posisi indeks yg diinginkan : option base 1 Function AmbilArray(arraysumber, posambil) Dim jumambil As Variant jumdata = UBound(arraysumber) jumambil = UBound(posambil) Dim arrayhasil As Variant ' yg diinginkan kadang tak memenuhi syarat alias isi array kosong ReDim arrayhasil(jumambil) xarraysumber = WorksheetFunction.Transpose(arraysumber) 'ambil data yg diinginkan ygsesuai = 0 For i = 1 To jumdata ' jika isi array kosong perror = IsError(xarraysumber(i)) For j = 1 To jumambil ' sesuai dgn yg diinginkan dan tak kosong If (i = posambil(j)) And Not perror Then ygsesuai = ygsesuai + 1 arrayhasil(ygsesuai) = xarraysumber(i) End If Next j Next i 'hasil sesuai data yg ada Dim hasilnya As Variant ReDim hasilnya(ygsesuai) For i = 1 To ygsesuai hasilnya(i) = arrayhasil(i) Next i AmbilArray = WorksheetFunction.Transpose(hasilnya) End Function rumus di range N7:N11 : {=IF( C7:C11>"b" , C7:C11 )} hasilnya : FALSE FALSE c d e rumus di range Q7 : { =AmbilArray( IF(C7:C11>"c",C7:C11,null) , {3,5} ) } hasil : e rumus di range T7:T8 : {=AmbilArray( IF(C7:C11>"c",C7:C11,null) , {3,5} ) } hasil : e e Rumus di range W7:W8 : {=AmbilArray( IF(C7:C11>="c",C7:C11,null) , {3,5} ) } hasil : c e Rumus di range Z7:Z9 : {=AmbilArray( IF(C7:C11>="c",C7:C11,null) , {3,5} ) } hasil : c e #N/A Dari contoh2 di atas, dapat di ambil kesimpulan : 1. Penggunaan Row dapat dihandalkan 2. jika array mempunyai jumlah item 1 ( satu ) , maka rumus array jika dibuat pada range yg melebihi , tidak akan menghasilkan #N/A sekarang saya akan gunakan collection option base 1 Function AmbilArray_Col(arraysumber, posambil) Dim jumambil As Variant jumdata = UBound(arraysumber) jumambil = UBound(posambil) Dim koleksi As New Collection ' yg diinginkan kadang tak memenuhi syarat alias isi array kosong xarraysumber = WorksheetFunction.Transpose(arraysumber) 'ambil data yg diinginkan ygsesuai = 0 For i = 1 To jumdata ' jika isi array kosong perror = IsError(xarraysumber(i)) For j = 1 To jumambil ' sesuai dgn yg diinginkan dan tak kosong If (i = posambil(j)) And Not perror Then koleksi.Add Item:=xarraysumber(i) End If Next j Next i 'hasil sesuai data yg ada Dim hasilnya As Variant ReDim hasilnya( koleksi.Count ) For i = 1 To koleksi.Count hasilnya(i) = koleksi.Item(i) Next i AmbilArray_Col = WorksheetFunction.Transpose(hasilnya) End Function Penggunaan mirip dgn fungsi AmbilArray , seperti {=AmbilArray_col( IF( C7:C11>="c" , C7:C11 ,null), {3,5} ) } Jadi kesimpulannya lebih baik gunakan Coolection jika jumlah item tak dapat dipastikan. Selamat Belajar membuat Fungsi Array Formula sendiri. ________________________________ To: [email protected] From: [email protected] Date: Thu, 27 Oct 2011 03:48:49 +0000 Subject: RE: [belajar-excel] Menyisipkan data di kolom sebelah Tambahan penggunaan row dan column . 1 2 3 4 5 {=INDEX(D7:D11, ROW(2:3) )} akan menghasilkan keluaran : 2 3 #N/A {=INDEX(D7:D11, COLUMN(2:3) )} akan menghasilkan keluaran : 1 2 3 walaupun kita hanya ingin memilih indeks ke 2 dan 3 , penggunaan Column tidak mendukung hal itu . ________________________________ To: [email protected] From: [email protected] Date: Wed, 26 Oct 2011 09:43:23 +0000 Subject: RE: [belajar-excel] Menyisipkan data di kolom sebelah * ada pola baru dgn transpose nih sekarang kita bermain dengan posisi data pada baris : 1 2 3 4 5 6 7 8 9 10 dan mengubah menjadi : 1 4 7 10 2 5 8 #REF! 3 6 9 #REF! kita dapat menggunakan : {=INDEX(B3:B12,ROW(1:3)+ {0,3,6,9} )} tapi saya gunakan : {=INDEX(B3:B12,ROW(1:3)+ 3*(COLUMN(1:4)-1) )} untuk mengubah menjadi : 1 2 3 4 5 6 7 8 9 10 #REF! #REF! kita dapat menggunakan : {=INDEX(B3:B12, COLUMN(1:3)+ TRANSPOSE({0,3,6,9}) )} tapi saya gunakan : {=INDEX(B3:B12, COLUMN(1:3) + 3*(ROW(1:4)-1) )} ________________________________ To: [email protected] From: [email protected] Date: Tue, 25 Oct 2011 13:35:18 +0000 Subject: RE: [belajar-excel] Menyisipkan data di kolom sebelah pola 1,2,1,2 atau 1,2,3,1,2,3 atau 1,2,3,4,1,2,3,4 dapat diakali dengan cara ? {=MOD(ROW(1:20)-1,2)+1} --> 1,2,1,2 ... {=MOD(ROW(1:20)-1,3)+1} --> 1,2,3,1,2,3 ... {=MOD(ROW(1:20)-1,4)+1} --> 1,2,3,4,1,2,3,4 ... pola 1,1,2,2,.. atau 1,1,1,2,2,2, .. {=CEILING(ROW(1:20)/2,1)} ---> 1,1,2,2 ... {=CEILING(ROW(1:20)/3,1)} ---> 1,1,1,2,2,2 ... misal : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 menjadi : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 gunakan : {=INDEX(B16:D22, CEILING(ROW(1:20)/3,1) , MOD(ROW(1:20)-1,3)+1 ) } silakan berkreasi dgn pola-pola bilangan lainnya..... ________________________________ To: [email protected] From: [email protected] Date: Tue, 25 Oct 2011 13:25:25 +0000 Subject: RE: [belajar-excel] Menyisipkan data di kolom sebelah gunakan array formula : {=INDEX(B3:C12, CEILING(ROW(1:20)/2,1) , IF(ISEVEN(ROW(1:20)),2,1) )} rumus ini berpola {{1,1},{1,2},{2,1},{2,2},{3,1},{3,2} ... {10,1},{10,2}} CEILING(ROW(1:20)/2,1) dapat diganti oleh ROUNDUP(ROW(1:20)/2,1) IF(ISEVEN(ROW(1:20)),2,1) dapat diganti IF(ISODD(ROW(1:20)),1,2) ' ini masa saja ________________________________ To: [email protected] From: [email protected] Date: Tue, 25 Oct 2011 16:58:45 +0800 Subject: [belajar-excel] Menyisipkan data di kolom sebelah Kepada para suhu X-cel Mohon pencerahan untuk kasus newbie yang pertama, kalo bisa jangan pake macro Thanks

