Saya membuat posting an beberapa kali , karena ada ide yang muncul tiba2. Jadi
sekaian di kirim . Tetapi kritik dan saran , saya terima dengan senang hati...
To: [email protected]
From: [email protected]
Date: Mon, 31 Oct 2011 13:16:52 +0700
Subject: Re: [belajar-excel] Menyisipkan data di kolom sebelah
BeExceler semuanya,
Saran mbak Haps ini patut dipertimbangkan.
Posting one liner tidak dianjurkan oleh milis.
Mengembangkan solusi dengan berbagai varian kasus dan solusi adalah perbuatan
yang baik. Kebaikan tersebut akan lebih tampak kebaikannya ketika dirangkum
menjadi satu cerita yang utuh dalam satu posting yang disertai workbook berisi
beberapa sheet tentang masing-masing proses pengembangannya.
Hal ini akan membuat BeExceler yang bergairah dalam belajar ini akan lebih
mudah serta utuh merenunginya.
Wassalamualaikum Wr. Wb.
Kid.
2011/10/31 Haps <[email protected]>
[ Mohon maaf, O.O.T ]---------------------
Dengan posting hanya sebaris (bahka se "kata") itu,...... Mungkin maksud Pak
Amar : meng-iya-kan pelajaran dari pak jkssxls
Sebetulnya OneLiner Posting seperti itu, termasuk tidak memenuhi imbauan
/peraturan milis..
Mengenai posting mulai yg ke3 atau ke4 sampai terakhir (ke 9) dari pak
jkssxls, dengan posting OOT beruntun-nya itu, mungkin maksudnya :
"Menjawab pertanyaan Pak Scorpio Alon tetapi sudah melebihi hal yg ditanyakan
(sudah OOT tetapi tanpa bilang OOT )"
Menurut pendapatku, pelajaran yg disampaikan cukup bagus, walaupun
hal sejenis sudah pernah ada yg menyampaikan di milis (dengan formula variasi
lain, yg seingat saya lebih pendek).
Posting itu, sekali lagi menurut pendapat saya saja, akan lebih bagus lagi
jika di-SATUKAN dlm satu paket, kemudian
* bisa diposted dlm TOPIK BARU (agar tidak OOT)* atau di-unggah ke area FILES
di milis ini (melalui moderator)
* atau bisa juga ditulis dalam posting secara Serial..
Saya berpendapat bahwa posting sudah OOT karena Subjectnya
adalah: "Menyisipkan data di kolom sebelah"
sementara penjelasan Bapak jkssxls mulai posting ke 3 atau 4 sampai
yang terahir (posting ke 9 ) sudah keluar dari topik tsb.
Agak istimewa juga: satu orang menanggapi 1 topik sampai 9 kali, sedangkan
sifat milis bukan sepeti chattting, di mana tulisan di milis ditulis tidak
terlalu
tergesa-gesa (agar tidak perlu sering diralat & revisi ) sedangkan di chatting
semuanya serba spontan.. karena lawan bicara menungggu di depan komputer
di seberang sana...
Juga ada satu hal yg sebaiknya diingat:Nasehat / palajaran yg diberikan
biasanya hanya akan didengar / dibaca
oleh pihak lain KALAU statusnya DITANYA-KAN
Hal yg tidak ditanyakan tetapi kita jelaskan dengan volume yg cukup besar,
biasanya tidak dibaca oleh audience..
(jadi sebaiknya jangan kecewa, karena 'psikologi masa' memang seperti itu)
Jika kita lihat bahwa Pak Scorpio Alon pun, hanya sekali saja menanggapi
tangapan2 dari members lain (itu pun hanya mengquote jawaban dari Bp Ghozi),
kita sudah dapat menyimpulkan sendiri sikap kak Scropio Alon (tentu saja
kesimpulan kita bisa salah)
Mohon maaf posting ini pun OOT (out of topic) tetapi diusahakan untuk
dipostedterdorong oleh rasa sayang kepada milis dan semua members &
moderatos-nya
dan sama sekali bukan untuk memperngaruhi pendapat members lailn bahwa hal spt
itu dilarang...
CMIIW
salam sayang, warm regards & wassalamualaikum wr wb.-haps-
2011/10/30 Amar luqman Hakim <[email protected]>
yo
--- Mods ---
Maksudnya apa ya ?
Moga-moga ada penjelasan yang lebih baik.
------------
________________________________
Dari: jkssxls Sudarsono <[email protected]>
Dikirim: Sabtu, 29 Oktober 2011 14:52
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.