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: belajar-excel@yahoogroups.com From: mr.nm...@gmail.com 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 <hapsari.stlizb...@gmail.com> [ 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 <amarluqmanha...@yahoo.com> yo --- Mods --- Maksudnya apa ya ? Moga-moga ada penjelasan yang lebih baik. ------------ ________________________________ Dari: jkssxls Sudarsono <jkss...@hotmail.com> 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.