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
















Kirim email ke