Jumat, 04 Agustus 2017

[belajar-excel] Digest Number 4259

15 Messages

Digest #4259
2e
3a
Form bawaan Excel by "hendrik karnadi" hendrikkarnadi
3b
Bls: [belajar-excel] Form bawaan Excel by "Udi Kusworo" udikusworo
3c
Re: Bls: [belajar-excel] Form bawaan Excel by "hendrik karnadi" hendrikkarnadi
4a
Masalah "fungsi" Collection dalam VBA by "hendrik karnadi" hendrikkarnadi
4b
Fw: Masalah "fungsi" Collection dalam VBA by "hendrik karnadi" hendrikkarnadi
4d
Re: Masalah "fungsi" Collection dalam VBA by "Mr. Kid" nmkid.family@ymail.com

Messages

Thu Aug 3, 2017 7:20 pm (PDT) . Posted by:

"nangagus"

Dear Ori,

Sebenarnya kasus ini lebih mudah digunakan pivot data atau filter,

silahkan dicoba dahulu menggunakan formula:

di B4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)

di C4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)*('Detail
Order'!L$3:L$14))

copy C4 ke D4 dan E4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)*('Detail
Order'!O$3:O$14))

Untuk formula dari G4 sampai J4 hampir sama dengan C4 sampai E4,
perbedaannya pada yang berwarna merah: $B$2 diganti dengan $G$2

salam
On 8/3/2017 7:28 PM, orie76@yahoo.com [belajar-excel] wrote:
>
> Dear Master Excel,
>
> Saya ada masalah dengan filter jumlah transaksi 2 kategori berdasarkan
> data dari sheet Detail Order (terlampir filenya)
>
> Tanya : Bagaimana agar di sheet Balance, pada kolom total transaksi,
> produk terjual, Jual & Beli dari Owner Astore dan Kastore terisi
> otomatis dan terpisahkan sesuai tanggal?
>
> Maaf klo pemilihan kata dari pertanyaan saya membingungkan,
> Toling bantuannya atas masalah saya ini, makasih
>
> Sent from my BlackBerry 10 smartphone on the XL network.
>

Thu Aug 3, 2017 9:36 pm (PDT) . Posted by:

‎Dear Bang Agus,
Saya coba dl ya, makasih banyak
Sent from my BlackBerry 10 smartphone on the XL network.
From: nangagus nangagus@gmail.com [belajar-excel]Sent: Jumat, 4
Agustus 2017 9.20 AMTo: belajar-excel@yahoogroups.comReply To:
belajar-excel@yahoogroups.comSubject: Re: [belajar-excel] Filter
Jumlah Total Transaksi 2 Kategori (Tanya Rumus)



Dear Ori,

Sebenarnya kasus ini lebih mudah digunakan pivot data atau
filter,

silahkan dicoba dahulu menggunakan formula:

di B4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)

di C4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)*('Detail
Order'!L$3:L$14))

copy C4 ke D4 dan E4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)*('Detail
Order'!O$3:O$14))

Untuk formula dari G4 sampai J4 hampir sama dengan C4 sampai E4,
perbedaannya pada yang berwarna merah: $B$2 diganti dengan $G$2

salam
On 8/3/2017 7:28 PM, orie76@yahoo.com <mailto:orie76@yahoo.com>
[belajar-excel] wrote:


Dear Master Excel,
Saya ada masalah dengan filter jumlah transaksi 2
kategori berdasarkan data dari sheet Detail Order
(terlampir filenya)
Tanya : Bagaimana agar di sheet Balance, pada kolom
total transaksi, produk terjual, Jual & Beli dari
Owner Astore dan Kastore terisi otomatis dan
terpisahkan sesuai tanggal?
Maaf klo pemilihan kata dari pertanyaan saya
membingungkan, Toling bantuannya atas
masalah saya ini, makasih
Sent from my BlackBerry 10 smartphone on the XL
network.



Thu Aug 3, 2017 9:36 pm (PDT) . Posted by:

Dear Bang Agus,
Setelah saya coba,
di kolom B4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)
Kok, hasilnya 0 ya?
Dan, sebagai tambahan info, apabila ada transaksi baru dgn
tanggal dan No. invoice yg sama saya menambahkan baris baru dgn
tipe Nama produk yg berbeda ke bawahnya, sehingga rumus filter
nya berdasarkan Tanggal, Owner & No. Invoice Penjualannya.
Bagaimana ya bang rumusnya?
Mohon pencerahannya, terimakasih.
Sent from my BlackBerry 10 smartphone on the XL network.
From: orie76@yahoo.comSent: Jumat, 4 Agustus 2017 10.29 AMTo:
belajar-excel@yahoogroups.comSubject: Re: [belajar-excel] Filter
Jumlah Total Transaksi 2 Kategori (Tanya Rumus)
‎Dear Bang Agus,
Saya coba dl ya, makasih banyak
Sent from my BlackBerry 10 smartphone on the XL network.
From: nangagus nangagus@gmail.com [belajar-excel]Sent: Jumat, 4
Agustus 2017 9.20 AMTo: belajar-excel@yahoogroups.comReply To:
belajar-excel@yahoogroups.comSubject: Re: [belajar-excel] Filter
Jumlah Total Transaksi 2 Kategori (Tanya Rumus)



Dear Ori,

Sebenarnya kasus ini lebih mudah digunakan pivot data atau
filter,

silahkan dicoba dahulu menggunakan formula:

di B4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)

di C4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)*('Detail
Order'!L$3:L$14))

copy C4 ke D4 dan E4 formulanya: =SUMPRODUCT(($B$2='Detail
Order'!$C$3:$C$14)*($A4='Detail Order'!$B$3:$B$14)*('Detail
Order'!O$3:O$14))

Untuk formula dari G4 sampai J4 hampir sama dengan C4 sampai E4,
perbedaannya pada yang berwarna merah: $B$2 diganti dengan $G$2

salam
On 8/3/2017 7:28 PM, orie76@yahoo.com <mailto:orie76@yahoo.com>
[belajar-excel] wrote:


Dear Master Excel,
Saya ada masalah dengan filter jumlah transaksi 2
kategori berdasarkan data dari sheet Detail Order
(terlampir filenya)
Tanya : Bagaimana agar di sheet Balance, pada kolom
total transaksi, produk terjual, Jual & Beli dari
Owner Astore dan Kastore terisi otomatis dan
terpisahkan sesuai tanggal?
Maaf klo pemilihan kata dari pertanyaan saya
membingungkan, Toling bantuannya atas
masalah saya ini, makasih
Sent from my BlackBerry 10 smartphone on the XL
network.




Thu Aug 3, 2017 7:40 pm (PDT) . Posted by:

"CepWahyu" juragan_75

Dear Be-Excel,

Mau tanya nih.apa sih parameternya kalo formula itu harus dieksekusi dengan
CSE? Apakah setiap formula yg ada array-nya atau bagaimana?

Regards

CW

Thu Aug 3, 2017 7:49 pm (PDT) . Posted by:

"nangagus"

Semua formula yang mengandung array wajib menggunakan CSE kecuali
formula***sumproduct* dan *Index* yang dapat menangani array tanpa
tombol CSE.

Baca petunjuknya di sini
<https://support.office.com/en-us/article/Create-an-array-formula-e43e12e0-afc6-4a12-bc7f-48361075954d>
dan di sini
<https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7d94a64e-3ff3-4686-9372-ecfd5caa57c7>

On 8/4/2017 8:03 AM, 'CepWahyu' cepwahyu@gmail.com [belajar-excel] wrote:
>
> Dear Be-Excel,
>
> Mau tanya nih�apa sih parameternya kalo formula itu harus dieksekusi
> dengan CSE? Apakah setiap formula yg ada array-nya atau bagaimana?
>
> Regards
>
> CW
>
>

Thu Aug 3, 2017 8:48 pm (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Ini coretan mbak Siti mengenai Array Formula....

| Array Formula - what is Array ?, whatis Formula ? |   Message List   |

| Reply | Forward | | Message #8782 of 13628 < Prev | Next > |

| Array Formula IS: 
A formula that performs multiple calculations on one or more sets of values, and then returns either a single result or multiple results. Array formulas are enclosed between braces { } and are entered by pressing CTRL+SHIFT+ENTER.) 
 
Rumus Array, katanya, adalah:
Sebuah rumus yg mengerjakan multi-kalkulasi terhadap satu atau lebih dari satu himpunan nilai, dan kemudian menghasilkan  hasil tunggal ataupun hasil multi.  Rumus Array selalu dikurung (otomatis oleh excel) dgn sepasang tanda { } (braces/kurung kurawal), KARENA HARUS dimasukkan ke cell dengan menekan tombol  CTRL+SHIFT+ENTER. " 

array
A set of sequentially indexed elements having the same intrinsic data type. Each element of an array has a unique identifying index number. Changes made to one element of an array don't affect the other elements. 
Array atau Larik
adalah: Sekelompok element berindex yg mempunyai typedata yg sama. Setiap elemen mempunyai nomor index yg unik. Pengubahan terhadap satu elemen tidak mempengaruhi elemen lainnya. 
Dalam prakteknya di worksheet, sebuah range memenuhi syarat untuk disebut sebagai sebuah ARRAY. Apakah semua datanya = satuType atau tidak, akan mempengaruhi hasil Array Formula dimana range tsb digunakan sbg arguments-nya. 

constant: 
A value that is not calculated and, therefore, does not change. For example, the number 210, and the text ""Quarterly Earnings"" are constants. An expression, or a value resulting from an expression, is not a constant." 

konstanta / tetapan:
sebuah nilai yg bukan suatu kalkulasi, dan oleh karena itu nilainya tetap / tidak berubah. Misalnya: bilangan 113  atau teks ""Selatan Jakarta"" adalah contoh sebuah konstanta. 
Sebuah nilai yg berupa  ekspresi / kalkulasi / rumus:  BUKAN sebuah konstanta."

sebelum mulai bermain-main dgn Formula Array, 
sebaiknya kita fahami dulu beberapa istilah di bawah ini, meskipun, maafkan daku, banyak yg berupa berita-ulangan. 

Formula
Formula (atau 'orang sini' bilang RUMUS), adalah persamaan yg mengkalkulasikan beberapa nilai dalam worksheet. Sebuah formula harus dimulai dengan tanda "samadengan" / equal sign (=). 
Contohnya: FORMULA di bawah ini akan  mengalikan 2 dgn 4 kemudian hasilnya ditambah dgn 7. Di cell Excel akan muncul hasilnya yaitu 15.
       =7+2*4
Mengapa bukan 7 ditambah 2 dikerjakan lebih dahulu, itu termasuk salah satu aturan di excel yg sebaiknya juga kita ketahui. 
Dalam formula tsb, selain tanda pembuka formula (=), terdapat dua macam ISI, yaitu operand (yg berupa konstanta 7, 2 dan 4) dan operator (yg berupa penambah (+) dan pengali (*). Kita tidak akan membicarakan bahwa ada banyak operator selain + dan *

Pada prinsip-dasarnya, Formula memang hanya terdiri dari Operand (yg mungkin dapat disebut pula sebagai Argument) dan Operator saja. Tetapi Operand itu dapat berupa banyak pilihan, antara lain: 
Konstanta, yaitu nilai tetap yg kita tuliskan langsung
Rujukan / reference ke sebuah cell atau range/array !
Fungsi  (Worksheet Functions)

Dalam pekembangannya, Rujukan ke cell / range,  cell / range-nya ternyata dapat berisi sebuah FORMULA juga.
Sebuah Fungsi ternyata di dalamnya dapat berisi Fungsi-Fungsi juga (fungsi di dalam fungsi / nested functions) 

"Titipan Protes & Pertanyaan dari Adek ""mBeling"":  
Di atas, Formula dikatakan sebagai PERSAMAAN. Dalam bahasa matematik PERSAMAAN mengandung dua Ruas, Kiri dan Kanan, yg keduanya harus SAMA nilainya. 
Sekarang wahai Mbak Iti-ku yg centil, Bagaimana ini ? Di mana Ruas Kirinya ? Hi hi hikk."
"Kamu mau Ruas Kiri Dek ?   Mbak Iti tunjukkan Ruas Kirinya: yaitu Cell itu sendiri.
Cell itu minimal punya dua muka / dua tugas: (1) sebagai tempat menuliskan TEKS FORMULANYA yg dimulai dari batas ruas, berupa EqualSign (=). 
Tugas kedua: dia adalah sebagai media penampakan dari Variable Memory yg menampung hasil formula tsb. 
Variable=FORMULA, atau  F16=FORMULA. !  Sudah kelihatan blum? Ruas Kirinya ??.  Dan karena Variable diAssigned dengan Formula maka dia menjadi berisi HASIL formula itu, seperti yg kemudian ditampakkan ketika penulisan formula selesai kita enter. ('gitu aja kok repot to Dek..!     
""ihh,... ngarang ! ""    .... kaburrrr..)"

Function  (Fungsi)
Fungsi sebetulnya juga sebuah formula, tetapi mengandung NAMA Fungsi, DAN cara penulisan (sintaks)nya sudah tertentu. Fungsi akan melakukan kalkulasi berdasarkan nilai-nilai pada argument-argument-nya secara spesifik sesuai yg telah ditentukan. 
Contohnya: untuk menjumlah sekelompok bilangan di Excel sudah disediakan fungsi SUM
dgn sintaks  =SUM(argument1, argument2,… dst...)
dimana argumentnya dapat berupa tiga jenis OPERAND yg sudah disebutkan di atas. 
contoh:   =SUM(A1:A13, B4:H4,5,(4*5/2),D21,AVERAGE(F10:F21))
SUM adalah nama fungsi, yg tugasnya hanya menjumlah nilai-nilai yg ada dalam arguments-nya. 
A1:A13 adalah rujukan ke range, yg saat ini "kebetulan" menjadi Argument1 pada fungsi SUM
B4:H4  sebagai argument2, penjelasannya sama  dgn argument1 
5 adalah sebuah konstanta type bilangan, diisikan sebagai argument 4
4*5/2  adalah sebuah formula biasa, diisikan sebagai argument ke 5 
D21  adalah juga rujukan ke range (yg kebetulan berupa range tanggal / cell), sbg argument ke 5.
Argument ke 6 berupa sebuah fungsi AVERAGE , yaitu mencari nilai rerata dari nilai-nilai yg ada  di range F10:F21
, = tanda pemisah argument;  ( ) tanda dimulai dan diakhirinya penulisan argument. 

Bahkan di dalam fungsi SUM kita dapat memasukkan argument berupa logikal value (yg akan di "hargai" sebagai nilai 1 atau 0). Selain itu, teks bilangan yg diketikkan secara langsung juga akan dianggap sbg bilangan.  =SUM("4",3,TRUE,FALSE) menghasilkan 8. 
Untuk diketahui, di worksheet excel (Excel 2003) tersedia tak kurang dari 329 buah Fungsi bawaan.

Catatan Kecil, sebelum lupa: Menuliskan Operand ataupun Argument dalam sebuah Formula atau Fungsi TIDAK PERLU DIBERI TANDA +(Plus) lagi di depannya. Yg perlu diberikan hanya tanda - (minus) bila memang nilai MINUS yg dikehendaki. Ini perlu ditegaskan, karena dari worksheet contoh-contoh kasus masih ada beberapa penulisan seperti itu. Walau pun tidak merubah nilai, penulisan tanda + (plus) yang BUKAN sebagai Operator berarti melakukan sesuatu yg mabazir. 
      =+E14+F16/+D21  dapat di-perBETUL dgn =E14+F16/D21

Type Data
Di worksheet Excel ada pembedaan Type (jenis) data. Secara garis besar, ada dua Type Data, yaitu Type Bilangan (Numbers) dan Type Teks (String)
Bilangan adalah tyedata yg dapat di-aritmatik-kan (di tambah, kurang, bagi, kali, pangkat dst) dgn bilangan lain, dan akan menghasilkan bilangan baru. Sedangkan type String, tidak punya nilai bilangan, jadi tidak dapat di-aritmatik-kan. 

Type Data Bilangan, untuk keperluan-keperluan tertentu dapat diFORMAT untuk dapat tampil sebagai type data TANGGAL / JAM dsb.
Apa pun cara tampilnya di worksheet, dia adalah tetap type bilangan. Tetapi Karakter Numerik (0 s/d 9) dapat dimasukkan ke cell sebagai Teks, secara sengaja maupun tidak sengaja. Hal seperti ini menjadikan Teks berpenampakan Bilangan. Excel 2003 mengangap data spt ini layak untuk diberi bendera hijau. (ErrorChecking: Numbers stored as Text) 

Selain kedua type yg telah disebut di atas,  ada data type Logikal, yaitu kondisi BENAR atau SALAH, yg di-representasikan dgn TRUE dan FALSE. Dalam kasus-kasus tertentu  data type Logikal dapat dianggap (menjadi) data type bilangan, yaitu bernilai 0 atau 1. 
Pada Array Formula yg sudah "tingkat lanjut", pemahaman ini sangat diperlukan.

Tatkala memasukkan data ke cell, hendaknya kita memperhatikan TYPE DATA yg kita kehendaki. Ada beberapa cara / kiat untuk memasukkan data ke cell agar oleh excel dianggap sbg type Bilangan (Numbers), terutama subType TANGGAL. 
Tidak jarang kesulitan timbul dan ternyata berawal dari data kita yg kita SANGKA bilangan / Tanggal ternyata: bertype String.
Teks yg berpenampakan SEPERTI  Bilangan atau SEPERTI Tanggal / Time, jika tidak disadari "ke-TYPE-an"-nya sering menjengkelkan karena menggagalkan HASIL YG DIKEHENDAKI dalam rumus. 
SALAH TYPE ini sudah sering dibicarakan di milis XL-mania, harapan kita tidak diulang (JANGAN tidak disadari) oleh members lain, agar kita dapat segera meningkat ke pemikiran lain yg bukan sekedar SALAH TYPE saja.

Kapan kita perlu menulis Array Formula ?
Array Formula diperlukan: Jika dalam formula yg akan kita buat mengandung Evaluasi terhadap (minimal) SEKELOMPOK DATA (range / array) dengan syarat tertentu, dan hasil evaluasi itu (yg tentunya berupa BANYAK HASIL evaluasi) ingin kita ketahui secara individual, baik nantinya ditampilkan dalam BANYAK cell atau pun hanya ditampilkan dalam cell tunggal (setelah dirangkum dengan fungsi perangkum, misal SUM, AVERAGE, PRODUCT, MAX, MIN, SMALL, LARGE, AND, OR dsb) 
NOTE: Array formula yg menghasilkan MULTI-HASIL, jika dituliskan hanya dalam satu cell akan hanya menampakkan HASIL-PERTAMA saja, atau bila MULTI HASIL tsb berupa sebuah RUJUKAN RANGE, akan menampakkan ErrorValue." 

Yg siti maksud dgn Evaluasi terhadap sekelompok data, kira-kira begini (dalam kasus paling sederhana): range A1:A1000 berisi data-data bilangan. Anda ingin mengetahui Ada berapa buah bilangan yg Nilainya < 100. Maka Jawabannya hanya dapat dimunculkan bila kita TELAH MELIHAT SETIAP CELL dalam Range tsb SATU-PERSATU dan mencatat hasil tiap EVALUASI tsb. 

Jika kasus yg kita hadapi minimal seperti itu, maka Array formula sudah mulai dapat dipertimbangkan penggunaannya. Tetapi dalam beberapa kasus sederhana yg sudah melibatkan array seperti itu; Excel sebetulnya SUDAH menyediakan fungsi-fungsi yg penulisannya tidak perlu di-enter dengan CSE. Misalnya Fungsi COUNTIF, SUMIF, SUMPRODUCT dan mungkin masih ada beberapa lagi. 

Saya kira, minimal Ketiga fungsi ini sebaiknya kita ubek-ubek sampai kita faham "jalan ceritak"-nya. Berdasarkan pemahaman "fungsi ber-Aragument array sederhana" inilah  kita punya pengalaman main array untuk masuk ke Formula Array yg lebih tinggi kompleksitasnya. 

Fungsi semacam COUNTIF dan SUMIF, MATCH, hanya mampu diberi satu syarat, Jika syarat evaluasi sudah lebih dari satu, harus ada cara lain untuk mencari solusinya.  Array formula adalah salah satu jawabannya.  
Fungsi Fungsi lain yg argumennya dapat berupa Array, tidak harus dituliskan secara array formula (dan oleh karena itu: bukan Array Formula), misalnya fungsi SUM dan AVERAGE, MIN, MAX, INDEX dsb.." 
Walau pun fungsi-fungsi semacam itu mengandung argument berupa array, misal SUM(A1:A1000), di sini tidak ada pekerjaan mengevaluasi dgn syarat tertentu terhadap setiap data di A1 s/d A1000. Yg terjadi hanyalah SEMUA nilai yg ada di Range tsb TANPA SYARAT dijumlahkan. Hasilnya pun selalu hanya Hasil Tunggal, bukan Multi Hasil.  O.k.i. Fungsi SUM sederhana bukan termasuk Array Formula

Maafkan (lagi) daku, kalimat yg dimaksudkan sbg usaha menjelaskan itu  kayaknya tidak mudah ditangkap maksudnya. Mungkin malah membuat hal yg ingin Anda ketahui menjadi semakin kabur. (yg menulis pun juga ndak mudeng jeee.., lha wong Cuma nulis dowang..)  Oleh karena itu mempraktekkannya dalam beberapa contoh : hukumnya adalah  "wajib dan halal"  ! (begitu kata pak Syafril dari Seksi Kerohanian XL maniak... ya kan pak?!) 

Pada wokbuk (terlampir), di beberapa sheets kita akan mencoba mempraktekkan array formula pada tingkat yg paling sederhana. (pasalnya mau membuat contoh yg tingkat yg canggih belum bisa..). Pengembangan ke tingkat yg lebih sofistiketed, kuncinya tentu ada pada diri kita masing-masing.., komponennya: kesempatan, waktu dan kemauan & ke-ngeyel-an.. Masih ingatkah Anda, bang & mpok Momods pernah bilang bahwa Array Formula dapat bekerja sebagai Looping ? Sehingga dalam kasus tertentu Array Formula adalah PseudoLooping ? 

Di Help Excel, ada beberapa topik yg bagoes mengenai Array formula. Pada boks "Search For" ketikkan Array Formula, dan help akan menyajikan daftar topik terkait. Di Excel 2003, dlm kondisi OffLine, tersaji 20 results, tetapi yg benar-2 beraroma array formula hanya 5 bijik. Sikat semua aja blèh !! 

bluewater & jm / 10agu2007
<lampiran ArrayFormula_2007.zi_, agar direname menjadi *,zip sebelum diextract>

|

Salam,HK

----- Forwarded Message -----From: nangagus nangagus@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com>To: "belajar-excel@yahoogroups.com" <belajar-excel@yahoogroups.com>Sent: Friday, August 4, 2017, 9:49:49 AM GMT+7Subject: Re: [belajar-excel] cara mengetahui formula harus dieksekusi dengan CSE
 


Semua formula yang mengandung array wajib menggunakan CSE kecuali formula sumproduct dan Index yang dapat menangani array tanpa tombol CSE.

Baca petunjuknya di sini dan di sini


On 8/4/2017 8:03 AM, 'CepWahyu' cepwahyu@gmail.com [belajar-excel] wrote:

 
Dear Be-Excel,

 

Mau tanya nih…apa sih parameternya kalo formula itu harus dieksekusi dengan CSE? Apakah setiap formula yg ada array-nya atau bagaimana?

 

Regards

CW


Fri Aug 4, 2017 1:20 am (PDT) . Posted by:

"CepWahyu" juragan_75

Makasih banyak bang nangagus dan bang HK atas responsya……

Alhamdulillah sudah mulai tercerahkan.

Regards

CW

From: belajar-excel@yahoogroups.com [mailto:belajar-excel@yahoogroups.com]
Sent: Jumat, 04 Agustus 2017 10.48
To: BeExcel <belajar-excel@yahoogroups.com>
Subject: Fw: Re: [belajar-excel] cara mengetahui formula harus dieksekusi dengan CSE

Ini coretan mbak Siti mengenai Array Formula....

Array Formula - what is Array ?, whatis Formula ?

Message List

Reply | Forward

Message #8782 of 13628 < Prev | Next >

Array Formula IS:
A formula that performs multiple calculations on one or more sets of values, and then returns either a single result or multiple results. Array formulas are enclosed between braces { } and are entered by pressing CTRL+SHIFT+ENTER.)

Rumus Array, katanya, adalah:
Sebuah rumus yg mengerjakan multi-kalkulasi terhadap satu atau lebih dari satu himpunan nilai, dan kemudian menghasilkan hasil tunggal ataupun hasil multi. Rumus Array selalu dikurung (otomatis oleh excel) dgn sepasang tanda { } (braces/kurung kurawal), KARENA HARUS dimasukkan ke cell dengan menekan tombol CTRL+SHIFT+ENTER. "

array
A set of sequentially indexed elements having the same intrinsic data type. Each element of an array has a unique identifying index number. Changes made to one element of an array don't affect the other elements.
Array atau Larik
adalah: Sekelompok element berindex yg mempunyai typedata yg sama. Setiap elemen mempunyai nomor index yg unik. Pengubahan terhadap satu elemen tidak mempengaruhi elemen lainnya.
Dalam prakteknya di worksheet, sebuah range memenuhi syarat untuk disebut sebagai sebuah ARRAY. Apakah semua datanya = satuType atau tidak, akan mempengaruhi hasil Array Formula dimana range tsb digunakan sbg arguments-nya.

constant:
A value that is not calculated and, therefore, does not change. For example, the number 210, and the text ""Quarterly Earnings"" are constants. An expression, or a value resulting from an expression, is not a constant."

konstanta / tetapan:
sebuah nilai yg bukan suatu kalkulasi, dan oleh karena itu nilainya tetap / tidak berubah. Misalnya: bilangan 113 atau teks ""Selatan Jakarta"" adalah contoh sebuah konstanta.
Sebuah nilai yg berupa ekspresi / kalkulasi / rumus: BUKAN sebuah konstanta."

sebelum mulai bermain-main dgn Formula Array,
sebaiknya kita fahami dulu beberapa istilah di bawah ini, meskipun, maafkan daku, banyak yg berupa berita-ulangan.

Formula
Formula (atau 'orang sini' bilang RUMUS), adalah persamaan yg mengkalkulasikan beberapa nilai dalam worksheet. Sebuah formula harus dimulai dengan tanda "samadengan" / equal sign (=).
Contohnya: FORMULA di bawah ini akan mengalikan 2 dgn 4 kemudian hasilnya ditambah dgn 7. Di cell Excel akan muncul hasilnya yaitu 15.
=7+2*4
Mengapa bukan 7 ditambah 2 dikerjakan lebih dahulu, itu termasuk salah satu aturan di excel yg sebaiknya juga kita ketahui.
Dalam formula tsb, selain tanda pembuka formula (=), terdapat dua macam ISI, yaitu operand (yg berupa konstanta 7, 2 dan 4) dan operator (yg berupa penambah (+) dan pengali (*). Kita tidak akan membicarakan bahwa ada banyak operator selain + dan *

Pada prinsip-dasarnya, Formula memang hanya terdiri dari Operand (yg mungkin dapat disebut pula sebagai Argument) dan Operator saja. Tetapi Operand itu dapat berupa banyak pilihan, antara lain:
Konstanta, yaitu nilai tetap yg kita tuliskan langsung
Rujukan / reference ke sebuah cell atau range/array !
Fungsi (Worksheet Functions)

Dalam pekembangannya, Rujukan ke cell / range, cell / range-nya ternyata dapat berisi sebuah FORMULA juga.
Sebuah Fungsi ternyata di dalamnya dapat berisi Fungsi-Fungsi juga (fungsi di dalam fungsi / nested functions)

"Titipan Protes & Pertanyaan dari Adek ""mBeling"":
Di atas, Formula dikatakan sebagai PERSAMAAN. Dalam bahasa matematik PERSAMAAN mengandung dua Ruas, Kiri dan Kanan, yg keduanya harus SAMA nilainya.
Sekarang wahai Mbak Iti-ku yg centil, Bagaimana ini ? Di mana Ruas Kirinya ? Hi hi hikk."
"Kamu mau Ruas Kiri Dek ? Mbak Iti tunjukkan Ruas Kirinya: yaitu Cell itu sendiri.
Cell itu minimal punya dua muka / dua tugas: (1) sebagai tempat menuliskan TEKS FORMULANYA yg dimulai dari batas ruas, berupa EqualSign (=).
Tugas kedua: dia adalah sebagai media penampakan dari Variable Memory yg menampung hasil formula tsb.
Variable=FORMULA, atau F16=FORMULA. ! Sudah kelihatan blum? Ruas Kirinya ??. Dan karena Variable diAssigned dengan Formula maka dia menjadi berisi HASIL formula itu, seperti yg kemudian ditampakkan ketika penulisan formula selesai kita enter. ('gitu aja kok repot to Dek..!
""ihh,... ngarang ! "" .... kaburrrr..)"

Function (Fungsi)
Fungsi sebetulnya juga sebuah formula, tetapi mengandung NAMA Fungsi, DAN cara penulisan (sintaks)nya sudah tertentu. Fungsi akan melakukan kalkulasi berdasarkan nilai-nilai pada argument-argument-nya secara spesifik sesuai yg telah ditentukan.
Contohnya: untuk menjumlah sekelompok bilangan di Excel sudah disediakan fungsi SUM
dgn sintaks =SUM(argument1, argument2,… dst...)
dimana argumentnya dapat berupa tiga jenis OPERAND yg sudah disebutkan di atas.
contoh: =SUM(A1:A13, B4:H4,5,(4*5/2),D21,AVERAGE(F10:F21))
SUM adalah nama fungsi, yg tugasnya hanya menjumlah nilai-nilai yg ada dalam arguments-nya.
A1:A13 adalah rujukan ke range, yg saat ini "kebetulan" menjadi Argument1 pada fungsi SUM
B4:H4 sebagai argument2, penjelasannya sama dgn argument1
5 adalah sebuah konstanta type bilangan, diisikan sebagai argument 4
4*5/2 adalah sebuah formula biasa, diisikan sebagai argument ke 5
D21 adalah juga rujukan ke range (yg kebetulan berupa range tanggal / cell), sbg argument ke 5.
Argument ke 6 berupa sebuah fungsi AVERAGE , yaitu mencari nilai rerata dari nilai-nilai yg ada di range F10:F21
, = tanda pemisah argument; ( ) tanda dimulai dan diakhirinya penulisan argument.

Bahkan di dalam fungsi SUM kita dapat memasukkan argument berupa logikal value (yg akan di "hargai" sebagai nilai 1 atau 0). Selain itu, teks bilangan yg diketikkan secara langsung juga akan dianggap sbg bilangan. =SUM("4",3,TRUE,FALSE) menghasilkan 8.
Untuk diketahui, di worksheet excel (Excel 2003) tersedia tak kurang dari 329 buah Fungsi bawaan.

Catatan Kecil, sebelum lupa: Menuliskan Operand ataupun Argument dalam sebuah Formula atau Fungsi TIDAK PERLU DIBERI TANDA +(Plus) lagi di depannya. Yg perlu diberikan hanya tanda - (minus) bila memang nilai MINUS yg dikehendaki. Ini perlu ditegaskan, karena dari worksheet contoh-contoh kasus masih ada beberapa penulisan seperti itu. Walau pun tidak merubah nilai, penulisan tanda + (plus) yang BUKAN sebagai Operator berarti melakukan sesuatu yg mabazir.
=+E14+F16/+D21 dapat di-perBETUL dgn =E14+F16/D21

Type Data
Di worksheet Excel ada pembedaan Type (jenis) data. Secara garis besar, ada dua Type Data, yaitu Type Bilangan (Numbers) dan Type Teks (String)
Bilangan adalah tyedata yg dapat di-aritmatik-kan (di tambah, kurang, bagi, kali, pangkat dst) dgn bilangan lain, dan akan menghasilkan bilangan baru. Sedangkan type String, tidak punya nilai bilangan, jadi tidak dapat di-aritmatik-kan.

Type Data Bilangan, untuk keperluan-keperluan tertentu dapat diFORMAT untuk dapat tampil sebagai type data TANGGAL / JAM dsb.
Apa pun cara tampilnya di worksheet, dia adalah tetap type bilangan. Tetapi Karakter Numerik (0 s/d 9) dapat dimasukkan ke cell sebagai Teks, secara sengaja maupun tidak sengaja. Hal seperti ini menjadikan Teks berpenampakan Bilangan. Excel 2003 mengangap data spt ini layak untuk diberi bendera hijau. (ErrorChecking: Numbers stored as Text)

Selain kedua type yg telah disebut di atas, ada data type Logikal, yaitu kondisi BENAR atau SALAH, yg di-representasikan dgn TRUE dan FALSE. Dalam kasus-kasus tertentu data type Logikal dapat dianggap (menjadi) data type bilangan, yaitu bernilai 0 atau 1.
Pada Array Formula yg sudah "tingkat lanjut", pemahaman ini sangat diperlukan.

Tatkala memasukkan data ke cell, hendaknya kita memperhatikan TYPE DATA yg kita kehendaki. Ada beberapa cara / kiat untuk memasukkan data ke cell agar oleh excel dianggap sbg type Bilangan (Numbers), terutama subType TANGGAL.
Tidak jarang kesulitan timbul dan ternyata berawal dari data kita yg kita SANGKA bilangan / Tanggal ternyata: bertype String.
Teks yg berpenampakan SEPERTI Bilangan atau SEPERTI Tanggal / Time, jika tidak disadari "ke-TYPE-an"-nya sering menjengkelkan karena menggagalkan HASIL YG DIKEHENDAKI dalam rumus.
SALAH TYPE ini sudah sering dibicarakan di milis XL-mania, harapan kita tidak diulang (JANGAN tidak disadari) oleh members lain, agar kita dapat segera meningkat ke pemikiran lain yg bukan sekedar SALAH TYPE saja.

Kapan kita perlu menulis Array Formula ?
Array Formula diperlukan: Jika dalam formula yg akan kita buat mengandung Evaluasi terhadap (minimal) SEKELOMPOK DATA (range / array) dengan syarat tertentu, dan hasil evaluasi itu (yg tentunya berupa BANYAK HASIL evaluasi) ingin kita ketahui secara individual, baik nantinya ditampilkan dalam BANYAK cell atau pun hanya ditampilkan dalam cell tunggal (setelah dirangkum dengan fungsi perangkum, misal SUM, AVERAGE, PRODUCT, MAX, MIN, SMALL, LARGE, AND, OR dsb)
NOTE: Array formula yg menghasilkan MULTI-HASIL, jika dituliskan hanya dalam satu cell akan hanya menampakkan HASIL-PERTAMA saja, atau bila MULTI HASIL tsb berupa sebuah RUJUKAN RANGE, akan menampakkan ErrorValue."

Yg siti maksud dgn Evaluasi terhadap sekelompok data, kira-kira begini (dalam kasus paling sederhana): range A1:A1000 berisi data-data bilangan. Anda ingin mengetahui Ada berapa buah bilangan yg Nilainya < 100. Maka Jawabannya hanya dapat dimunculkan bila kita TELAH MELIHAT SETIAP CELL dalam Range tsb SATU-PERSATU dan mencatat hasil tiap EVALUASI tsb.

Jika kasus yg kita hadapi minimal seperti itu, maka Array formula sudah mulai dapat dipertimbangkan penggunaannya. Tetapi dalam beberapa kasus sederhana yg sudah melibatkan array seperti itu; Excel sebetulnya SUDAH menyediakan fungsi-fungsi yg penulisannya tidak perlu di-enter dengan CSE. Misalnya Fungsi COUNTIF, SUMIF, SUMPRODUCT dan mungkin masih ada beberapa lagi.

Saya kira, minimal Ketiga fungsi ini sebaiknya kita ubek-ubek sampai kita faham "jalan ceritak"-nya. Berdasarkan pemahaman "fungsi ber-Aragument array sederhana" inilah kita punya pengalaman main array untuk masuk ke Formula Array yg lebih tinggi kompleksitasnya.

Fungsi semacam COUNTIF dan SUMIF, MATCH, hanya mampu diberi satu syarat, Jika syarat evaluasi sudah lebih dari satu, harus ada cara lain untuk mencari solusinya. Array formula adalah salah satu jawabannya.
Fungsi Fungsi lain yg argumennya dapat berupa Array, tidak harus dituliskan secara array formula (dan oleh karena itu: bukan Array Formula), misalnya fungsi SUM dan AVERAGE, MIN, MAX, INDEX dsb.."
Walau pun fungsi-fungsi semacam itu mengandung argument berupa array, misal SUM(A1:A1000), di sini tidak ada pekerjaan mengevaluasi dgn syarat tertentu terhadap setiap data di A1 s/d A1000. Yg terjadi hanyalah SEMUA nilai yg ada di Range tsb TANPA SYARAT dijumlahkan. Hasilnya pun selalu hanya Hasil Tunggal, bukan Multi Hasil. O.k.i. Fungsi SUM sederhana bukan termasuk Array Formula

Maafkan (lagi) daku, kalimat yg dimaksudkan sbg usaha menjelaskan itu kayaknya tidak mudah ditangkap maksudnya. Mungkin malah membuat hal yg ingin Anda ketahui menjadi semakin kabur. (yg menulis pun juga ndak mudeng jeee.., lha wong Cuma nulis dowang..) Oleh karena itu mempraktekkannya dalam beberapa contoh : hukumnya adalah "wajib dan halal" ! (begitu kata pak Syafril dari Seksi Kerohanian XL maniak... ya kan pak?!)

Pada wokbuk (terlampir), di beberapa sheets kita akan mencoba mempraktekkan array formula pada tingkat yg paling sederhana. (pasalnya mau membuat contoh yg tingkat yg canggih belum bisa..). Pengembangan ke tingkat yg lebih sofistiketed, kuncinya tentu ada pada diri kita masing-masing.., komponennya: kesempatan, waktu dan kemauan & ke-ngeyel-an.. Masih ingatkah Anda, bang & mpok Momods pernah bilang bahwa Array Formula dapat bekerja sebagai Looping ? Sehingga dalam kasus tertentu Array Formula adalah PseudoLooping ?

Di Help Excel, ada beberapa topik yg bagoes mengenai Array formula. Pada boks "Search For" ketikkan Array Formula, dan help akan menyajikan daftar topik terkait. Di Excel 2003, dlm kondisi OffLine, tersaji 20 results, tetapi yg benar-2 beraroma array formula hanya 5 bijik. Sikat semua aja blèh !!

bluewater & jm / 10agu2007
<lampiran ArrayFormula_2007.zi_, agar direname menjadi *,zip sebelum diextract>

Salam,

HK

----- Forwarded Message -----

From: nangagus nangagus@gmail.com <mailto:nangagus@gmail.com> [belajar-excel] <belajar-excel@yahoogroups.com <mailto:belajar-excel@yahoogroups.com> >

To: "belajar-excel@yahoogroups.com <mailto:belajar-excel@yahoogroups.com> " <belajar-excel@yahoogroups.com <mailto:belajar-excel@yahoogroups.com> >

Sent: Friday, August 4, 2017, 9:49:49 AM GMT+7

Subject: Re: [belajar-excel] cara mengetahui formula harus dieksekusi dengan CSE

Semua formula yang mengandung array wajib menggunakan CSE kecuali formula sumproduct dan Index yang dapat menangani array tanpa tombol CSE.

Baca petunjuknya di sini <https://support.office.com/en-us/article/Create-an-array-formula-e43e12e0-afc6-4a12-bc7f-48361075954d> dan di sini <https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7d94a64e-3ff3-4686-9372-ecfd5caa57c7>

On 8/4/2017 8:03 AM, 'CepWahyu' cepwahyu@gmail.com <mailto:cepwahyu@gmail.com> [belajar-excel] wrote:

Dear Be-Excel,

Mau tanya nih…apa sih parameternya kalo formula itu harus dieksekusi dengan CSE? Apakah setiap formula yg ada array-nya atau bagaimana?

Regards

CW

Fri Aug 4, 2017 12:53 pm (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Hai CW,

Pertanyaannya susah-susah gampang... (bukan gampang-gampang susah loh ya)
Susah berlipat njelasinnya, tapi gampang ngasih contohnya.

Tentu sudah pernah baca atau tahu tentang array, formula, array formula,
dan sebangsanya...
jadi, gak perlu dijelasin lagi tentang literatur yang sudah banyak itu ya...

Sekarang yang simpel-simpel saja.

CTRL SHIFT ENTER (disingkat CSE) ditekan ketika selesai menulis formula
menggantikan penekanan tombol ENTER (yaah... ini sih dah umum..)
Parameter kalo formula harus pakai CSE :
adalah kalau formula di-ENTER saja hasilnya error, dan di
CSE keluar hasilnya. -> *kaidah utama, main coba-coba*

Tapi ya gak seru kalau gak ada ancer-ancernya ya...

Baiklah,
ancer-ancernya sebelum menggunakan kaidah utama di atas adalah seperti
cerita di baris selanjutnya ya... (Ingat... ancer-ancer sebelum pakai
kaidah utama loh ya)

Pakai data ini :



Kalau begitu, pernah memperhatikan saat menulis suatu fungsi dalam formula,
seperti gambar ini nih..

​nah loh... jarang memperhatikan ya...
Apa bedanya fungsi-fungsi yang dipakai dalam formula di sisi kiri dengan di
sisi kanan ?
Sum, IF, Row, dan sebagainya (ada banyak sekali), tidak punya inputan yang
ada kata array-nya seperti yang dimiliki SumProduct, Index, vLookUp, dan
lainnya (ada banyak).

*1. Gak ada kata 'array' dalam inputan fungsi, tetapi diisi array hasil
hitungan tertentu*
Cells D5 (hasil total Qty * Price) :
Kalau diisi formula berbunyi :
=Sum( D2:D4 ) -> hasilnya 140
maka D2:D4 tinggal ngambil, gak usah dihitung-hitung dulu sebelum di-Sum.
jadi, =Sum( D2:D4 ) gak perlu CSE, cukup ENTER saja...

Kalau di D5 ditulis formula :
=Sum( B2:B4 * C2:C4 ) -> hasilnya juga inginnya 140, karena
Qty (B2:B4) dikali Price (C2:C4)
maka B2:B4 dan C2:C4 diambil, lalu masing-masing yang bersesuaian dikalikan
dulu. Hasil perkalian masing-masing itulah nanti yang dihitung oleh si Sum.

B2:B4 * C2:C4 inilah yang disebut proses array.
Hasil proses array ini pastilah array data
Bunyi B2:B4 * C2:C4 itu sama saja di 1 bijik cells D4 ada hitungan begini :
B2 * C2 = 1 * 10 = 10
B3 * C3 = 2 * 20 = 40
B4 * C4 = 3 * 30 = 90
artinya ada hasil proses array berupa array data (kumpulan nilai-nilai) 10
, 40 , 90
Hasilnya kan lebih dari 1 bijik nilai...
Nah si Sum, kalau lihat gambar di atas, tidak punya kata 'array'
di-input-an-nya, adanya cuma bunyi number1, number blabla
Berarti si Sum gak bisa terima alias ogah disuruh ngerjain ngitung B2:B4 *
C2:C4
Kalau ogah, paksa si Sum supaya mau dengan CSE.
Jadi, formula
=Sum( B2:B4 * C2:C4 ) lalu tekan CSE akan menghasilkan 140,
karena si Sum dipaksa supaya ngerjain B2:B4 * C2:C4 dulu, barulah di sum.

Bagaimana dengan Row()...
sama saja prinsipnya, malah si Row cuma bisa menerima range, gak bisa diisi
angka
Coba saja cells A5 diisi dengan formula =Row(1) kan protes berat si Excel.
Lha ngawur kok ngisinya...
Kalau dah protes berat gitu, mau di paksa pakai CSE juga kagak mau. Namanya
udah ngambek ya gitu dah

*2. ADA kata 'array', tapi pakai IF atau IFError atau beberapa fungsi
semisal lainnya.*
Fungsi yang punya kata 'array' di-input-an-nya, seperti SumProduct saja deh
yang cetho welo welo, gak perlu dipaksa-paksa untuk kerja alilas gak usah
repot-repot tekan CSE, asal dia gak ketemu fungsi IF atau IFError.
*** pssst... ini rahasia loh ya, yang ada kata 'array' itu, punya teman
special yang disayang-sayang, yaitu si IF dan si IFError. Mungkin masih ada
yang lainnya lagi kali ya, yang jarang ketemu sama si sumproduct, seperti
isodd atau iseven gitu... Tapi yang jelas, ada cukup banyak, dan kaidah
utama di atas sana perlu dipakai lebih lanjut.
makanya, kalau mereka ketemu IF atau IFError, langsung deh jadi
pemalesan... harus dipaksa kerja alilas butuh CSE.

Cells D5, kalau diisi formula :
=SumProduct( D2:D4 ) -> hasilnya 140, seperti =Sum( D2:D4 )

Cells D5, kalau diisi formula :
=SumProduct( B2:B4 * C2:C4 ) lalu ENTER (gak usah CSE segala) ->
hasilnya 140, karena si SumProduct punya kata 'array' di-input-an-nya
padahal, B2:B4 * C2:C4 itu ya dihitung satu-satu dulu juga loh... rajin
ya... huh.. gak kaya si Sum tuh, yang harus dipaksa (pakai CSE)
*** jangan gitu sama si Sum... Biasanya, yang males itu justru lebih bisa
menyelesaikan masalah lebih cepat, karena mereka akan cari cara paling
efektif agar bisa bersegera bermalasan lagi

Tapi, kalau cells D5 diisi formula :
=SumProduct( IF( B2:B4 = B2:B4 , B2:B4 * C2:C4 ) ) lalu cuma
tekan ENTER doang... hadeeh... ketemu dah hilang akalnya si SumProduct
gara-gara ketemuan sama si IF...
Padahal si IF juga aslinya cuma disuruh ngecek apa bener kolom B isinya
sama dengan kolom B (lah pasti sama kan ya, gak usah mikir juga tahu kan),
lalu kerjakan B2:B4 * C2:C4

Tahu gak kenapa kok fungsi yang ada kata 'array' di-input-an-nya langsung
males ?
gini...
B2:B4 = B2:B4 itu harus dikerjakan satu per satu oleh si IF dulu, kalau
hasilnya bener, baru ngerjain B2*B4
nah... si IF tuh males ngerjain barang begituan... karena si IF gak ada
kata 'array' di-input-an-nya (lihat gambarnya lagi deh di atas sana)
Supaya si IF mau ngerjain itu kan harus dipaksa ya... nah si SumProduct
gak mau maksa si IF, 'cinta' gitu loh...
Akhirnya, si SumProduct terima dimarahin user mbelain si IF daripada
maksain si IF biar disayang user.
Nah... kalau dah begini nih, main paksa saja sama si SumProduct pakai CSE
=SumProduct( IF( B2:B4 = B2:B4 , B2:B4 * C2:C4 ) ) lalu tekan CSE
-> hasilnya 140
tuh kan, akhirnya mau kerja beneran... soalnya, si SumProduct bilang sama
si IF, IF aku cuma dipaksa user loh ini... aslinya aku gak mau maksain
kamu... (weeek.. raja gombal)

eh beneran loh ini...
Coba deh di D5 diisi formula dengan SumProduct begini :
=SumProduct( Trim( B2:B4 ) * Trim( C2:C4 ) ) lalu tekan ENTER
saja (gak usah CSE) -> hasilnya 140
ya kan, pilih kasih kan si fungsi yang ada kata 'array' nya ini.
*** Tapi ingat, ini sekadar ancer-ancer sebelum pakai kaidah utama di atas
sana loh ya... supaya gak asal main coba ENTER lalu fail baru CSE..

*3. Si rese bernama vLookUp (lihat gambar), hLookUp, Small, Large, dan
Match yang ngaku-ngaku pakai kata 'array'*
Fungsi-fungsi ini ngaku-ngaku pakai kata 'array' di-input-an-nya. Mungkin
ada fungsi lainnya yang juga seperti ini, tetapi cukup jarang dipakai.

Misal di cells A5 diisi formula =Max( D2:D4 ) hasilnya adalah 90
Ini setara dengan formula =Large( D2:D4 , 1 ) yang hasilnya adalah 90

Tapi kalau dah jadi begini formulanya :
=Large( --D2:D4 , 1 ) lalu cuma di ENTER, baru muncul tabiat asli
resenya si Large (saudara kecilnya yang bernama si Small juga gitu).
Jadi, kalau minta tolong ke Large dan Small trus ada hitungannya dulu,
pastikan tekan CSE, seperti begini :
=Large( --D2:D4 , 1 ) lalu tekan CSE -> hasilnya 90
karena --D2:D4 itu butuh dihitung satu per satu dulu, yaitu -1 * -1 *
D2:D4 -> seperti 1 * D2:D4 gitu loh

Sayangnya, yang namanya Match itu, walaupun rese, kemampuannya sangat
dibutuhkan dibanyak masalah. Jadi, kudu pinter-pinter ngakali resenya
mereka, terutama si Match.

Biasanya, kalau dah ketemu dengan mereka (yang rese begini), maka proses
hitung arraynya diserahkan ke yang beneran pakai kata 'array'. Umumnya
adalah si Index.
*** Si Index ini memang baik hati dan tidak sombong (asal gak ketemu sama
si IF, IFError, IsOdd, IsEven -- lihat nomor 2 ya)

Contoh formula Large di atas, jadinya begini :
=Large( *Index( * --D2:D4 * , 0 ) * , 1 ) ->
hasilnya 90 [ Index( inputan , 0 ) artinya ngambil semua baris
hasil inputan ]

*4. Hasil formula pengen ditampilkan di banyak cells sekaligus (namanya
blok array)*
Sebenarnya, ini untuk mengisi banyak cells sekaligus yang disebut sebagai
array block (blok array). Maka PASTI harus pakai CSE.
Contohnya begini :
1. blok cells E2 sampai E4
2. tulis bunyi formula ini (jangan lupa pakai = ya, kan formula)
=123
3. tekan CSE
maka E2:E4 adalah blok array berisi angka 123
Nah, hal seperti ini PASTI pakai CSE.
Itu baru 1 bijik angka, yang terus dianggap sebagai array data, lalu
ditulis ke banyak cells sekaligus.

Tanda bahwa formula disitu adalah blok array adalah GAK BISA menghapus 1
cells saja. Contoh, coba deh hapus cells E2. Paling cuman dimarahin sama si
Excel...

Sekarang contoh pakai formula yang ngitung banyak nilai sekalian ya...
blok F2 sampai F4, lalu tulis formula =D2:D4 lalu tekan CSE
hmmm... sudah lihat hasilnya kan, semua isi cells D2:D4 ditulis
masing-masing sesuai barisnya

Coba lagi, blok G2 sampai G4 lalu tulis formula =B2:B4 * C2:C4 tekan CSE
ooo... (o nya gak usah panjang-panjang bro or sis)

Coba lagi, blok di H2 sampai M4 (yup, 3 baris x 6 kolom), lalu tulis
formula =B2:B4 * C2:C4 lalu tekan CSE
eh... sudah gak o lagi...

Kalo gitu sekarang mulai seriusnya...
Fungsi Row kan gak punya kata 'array' tuh, maka kalau mau bikin nomor urut
pakai blok array (ingat, blok array PASTI butuh CSE) bisa dengan cara itu
Misal : blok D7:D9 (yup, 3 baris x 1 kolom), lalu tulis =Row( A1:A3 ) dan
tekan CSE

Fungsi Index (ingat kan sama si Index yang baik hati dan tidak sombong),
walau ada kata 'array', kalau mau nampilin semua hasilnya ke banyak cells
(sebagai blok array), tetap pakai CSE.
Contoh :
Blok E7:E9, tulis formula =Index( B2:B4 * C2:C4 , 0 ) lalu tekan CSE
Padahal, kalau mau melakukan Sum semua hasil Index, gak perelu CSE, seperti
di cells B5 diisi formula =Sum( Index( B2:C2 * C2:C4 , 0 ) ) lalu
tekan ENTER karena cuma mau nulis di sebuah cells, dan hasil akhir formula
cuma 1 bijik nilai (hasil SUM), sedang yang bertugas ngerjain array
perkaliannya adalah si Index.

Dah ah, dah hampir masuk akhir 1/3 malam...
yang ini terakhir buat mainan saja...

Coba blok A11:D11 (yup, 1 baris x 4 kolom), lalu tulis formula =vLookUp(
"B" , Trim( A2:D4 ) , Column( A1:D1 ) , 0 ) lalu tekan CSE
Coba di cells A12 (1 cells) ditulis formula =vLookUp( "B" , Trim( A2:D4 ) ,
4 , 0 ) lalu tekan ENTER
Coba di cells A13 (1 cells) ditulis formula =vLookUp( "B" , Trim( A2:D4 ) ,
4 , 0 ) lalu tekan CSE

Silakan membunyikan pendapat kenapa dan mengapanya, dan persamaan beserta
perbedaan dari 3 formula vLookUp tersebut.
Mau tanya juga boleh...

Dah dulu ya..

permisi...

Regards,
Kid

2017-08-04 8:03 GMT+07:00 'CepWahyu' cepwahyu@gmail.com [belajar-excel] <
belajar-excel@yahoogroups.com>:

>
>
> Dear Be-Excel,
>
>
>
> Mau tanya nih…apa sih parameternya kalo formula itu harus dieksekusi
> dengan CSE? Apakah setiap formula yg ada array-nya atau bagaimana?
>
>
>
> Regards
>
> CW
>
>
>

Thu Aug 3, 2017 9:10 pm (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Sekedar coretan menjelang sholat Jum'at....
Bagi teman2 Be-Excel yang suka main2 dengan database sederhana namun ga mau repot2 bikin userform, sebenarnya Excel sdh menyiapkan satu "Database Form" yang bisa kita manfaatkan untuk Data Input dan Edit.
Walupun sifatnya link ke Sheet yang ada Database nya namun jika Sheetnya tidak diprotect akan merepotkan karena bisa dikutak-katik oleh yang tidak berwenang.
Agar fungsi "Database Form" tetap jalan namun Sheetnya diprotect (database hanya bisa diedit di Form) dan sekaligus tidak kelihatan (hanya bisa dibuat Visible melalui VBE Sheet)....saya mencoba membuat macro sederhana sbb :
Sub DefaultForm()
    With Sheet1
        .Visible = True
        .Unprotect "hk"
        .ShowDataForm
        .Protect "hk"
        .Visible = xlSheetVeryHidden
    End With
End Sub
Apabila perlu, VBE Sheetnya pun bisa diprotect.
Selamat mencoba dan mohon masukannya.
Salam,HK
 

Fri Aug 4, 2017 3:53 am (PDT) . Posted by:

"Udi Kusworo" udikusworo

Mohon lampirkan contoh filenya.  Sy sedang coba2, tapi belum dapet titik terang. Maaf masih awam macro excel. 

Dikirim dari Yahoo Mail di Android

Pada Jum, 4 Agt 2017 pada 11:10, hendrik karnadi hendrikkarnadi@yahoo.com [belajar-excel]<belajar-excel@yahoogroups.com> menulis:  

Sekedar coretan menjelang sholat Jum'at....
Bagi teman2 Be-Excel yang suka main2 dengan database sederhana namun ga mau repot2 bikin userform, sebenarnya Excel sdh menyiapkan satu "Database Form" yang bisa kita manfaatkan untuk Data Input dan Edit.
Walupun sifatnya link ke Sheet yang ada Database nya namun jika Sheetnya tidak diprotect akan merepotkan karena bisa dikutak-katik oleh yang tidak berwenang.
Agar fungsi "Database Form" tetap jalan namun Sheetnya diprotect (database hanya bisa diedit di Form) dan sekaligus tidak kelihatan (hanya bisa dibuat Visible melalui VBE Sheet)....saya mencoba membuat macro sederhana sbb :
Sub DefaultForm()
    With Sheet1
        .Visible = True
        .Unprotect "hk"
        .ShowDataForm
        .Protect "hk"
        .Visible = xlSheetVeryHidden
    End With
End Sub
Apabila perlu, VBE Sheetnya pun bisa diprotect.
Selamat mencoba dan mohon masukannya.
Salam,HK
  #yiv6235903968 #yiv6235903968 -- #yiv6235903968ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6235903968 #yiv6235903968ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6235903968 #yiv6235903968ygrp-mkp #yiv6235903968hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6235903968 #yiv6235903968ygrp-mkp #yiv6235903968ads {margin-bottom:10px;}#yiv6235903968 #yiv6235903968ygrp-mkp .yiv6235903968ad {padding:0 0;}#yiv6235903968 #yiv6235903968ygrp-mkp .yiv6235903968ad p {margin:0;}#yiv6235903968 #yiv6235903968ygrp-mkp .yiv6235903968ad a {color:#0000ff;text-decoration:none;}#yiv6235903968 #yiv6235903968ygrp-sponsor #yiv6235903968ygrp-lc {font-family:Arial;}#yiv6235903968 #yiv6235903968ygrp-sponsor #yiv6235903968ygrp-lc #yiv6235903968hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6235903968 #yiv6235903968ygrp-sponsor #yiv6235903968ygrp-lc .yiv6235903968ad {margin-bottom:10px;padding:0 0;}#yiv6235903968 #yiv6235903968actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6235903968 #yiv6235903968activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6235903968 #yiv6235903968activity span {font-weight:700;}#yiv6235903968 #yiv6235903968activity span:first-child {text-transform:uppercase;}#yiv6235903968 #yiv6235903968activity span a {color:#5085b6;text-decoration:none;}#yiv6235903968 #yiv6235903968activity span span {color:#ff7900;}#yiv6235903968 #yiv6235903968activity span .yiv6235903968underline {text-decoration:underline;}#yiv6235903968 .yiv6235903968attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6235903968 .yiv6235903968attach div a {text-decoration:none;}#yiv6235903968 .yiv6235903968attach img {border:none;padding-right:5px;}#yiv6235903968 .yiv6235903968attach label {display:block;margin-bottom:5px;}#yiv6235903968 .yiv6235903968attach label a {text-decoration:none;}#yiv6235903968 blockquote {margin:0 0 0 4px;}#yiv6235903968 .yiv6235903968bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6235903968 .yiv6235903968bold a {text-decoration:none;}#yiv6235903968 dd.yiv6235903968last p a {font-family:Verdana;font-weight:700;}#yiv6235903968 dd.yiv6235903968last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6235903968 dd.yiv6235903968last p span.yiv6235903968yshortcuts {margin-right:0;}#yiv6235903968 div.yiv6235903968attach-table div div a {text-decoration:none;}#yiv6235903968 div.yiv6235903968attach-table {width:400px;}#yiv6235903968 div.yiv6235903968file-title a, #yiv6235903968 div.yiv6235903968file-title a:active, #yiv6235903968 div.yiv6235903968file-title a:hover, #yiv6235903968 div.yiv6235903968file-title a:visited {text-decoration:none;}#yiv6235903968 div.yiv6235903968photo-title a, #yiv6235903968 div.yiv6235903968photo-title a:active, #yiv6235903968 div.yiv6235903968photo-title a:hover, #yiv6235903968 div.yiv6235903968photo-title a:visited {text-decoration:none;}#yiv6235903968 div#yiv6235903968ygrp-mlmsg #yiv6235903968ygrp-msg p a span.yiv6235903968yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6235903968 .yiv6235903968green {color:#628c2a;}#yiv6235903968 .yiv6235903968MsoNormal {margin:0 0 0 0;}#yiv6235903968 o {font-size:0;}#yiv6235903968 #yiv6235903968photos div {float:left;width:72px;}#yiv6235903968 #yiv6235903968photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv6235903968 #yiv6235903968photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6235903968 #yiv6235903968reco-category {font-size:77%;}#yiv6235903968 #yiv6235903968reco-desc {font-size:77%;}#yiv6235903968 .yiv6235903968replbq {margin:4px;}#yiv6235903968 #yiv6235903968ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6235903968 #yiv6235903968ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6235903968 #yiv6235903968ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6235903968 #yiv6235903968ygrp-mlmsg select, #yiv6235903968 input, #yiv6235903968 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6235903968 #yiv6235903968ygrp-mlmsg pre, #yiv6235903968 code {font:115% monospace;}#yiv6235903968 #yiv6235903968ygrp-mlmsg * {line-height:1.22em;}#yiv6235903968 #yiv6235903968ygrp-mlmsg #yiv6235903968logo {padding-bottom:10px;}#yiv6235903968 #yiv6235903968ygrp-msg p a {font-family:Verdana;}#yiv6235903968 #yiv6235903968ygrp-msg p#yiv6235903968attach-count span {color:#1E66AE;font-weight:700;}#yiv6235903968 #yiv6235903968ygrp-reco #yiv6235903968reco-head {color:#ff7900;font-weight:700;}#yiv6235903968 #yiv6235903968ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6235903968 #yiv6235903968ygrp-sponsor #yiv6235903968ov li a {font-size:130%;text-decoration:none;}#yiv6235903968 #yiv6235903968ygrp-sponsor #yiv6235903968ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv6235903968 #yiv6235903968ygrp-sponsor #yiv6235903968ov ul {margin:0;padding:0 0 0 8px;}#yiv6235903968 #yiv6235903968ygrp-text {font-family:Georgia;}#yiv6235903968 #yiv6235903968ygrp-text p {margin:0 0 1em 0;}#yiv6235903968 #yiv6235903968ygrp-text tt {font-size:120%;}#yiv6235903968 #yiv6235903968ygrp-vital ul li:last-child {border-right:none !important;}#yiv6235903968

Fri Aug 4, 2017 7:57 am (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Ini contoh filenya.
Salam,HK
On Friday, August 4, 2017, 5:54:04 PM GMT+7, Udi Kusworo udikusworo@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:

 
Mohon lampirkan contoh filenya.  Sy sedang coba2, tapi belum dapet titik terang. Maaf masih awam macro excel. 

Dikirim dari Yahoo Mail di Android

Pada Jum, 4 Agt 2017 pada 11:10, hendrik karnadi hendrikkarnadi@yahoo.com [belajar-excel]<belajar-excel@yahoogroups.com> menulis:  

Sekedar coretan menjelang sholat Jum'at....
Bagi teman2 Be-Excel yang suka main2 dengan database sederhana namun ga mau repot2 bikin userform, sebenarnya Excel sdh menyiapkan satu "Database Form" yang bisa kita manfaatkan untuk Data Input dan Edit.
Walupun sifatnya link ke Sheet yang ada Database nya namun jika Sheetnya tidak diprotect akan merepotkan karena bisa dikutak-katik oleh yang tidak berwenang.
Agar fungsi "Database Form" tetap jalan namun Sheetnya diprotect (database hanya bisa diedit di Form) dan sekaligus tidak kelihatan (hanya bisa dibuat Visible melalui VBE Sheet)....saya mencoba membuat macro sederhana sbb :
Sub DefaultForm()
    With Sheet1
        .Visible = True
        .Unprotect "hk"
        .ShowDataForm
        .Protect "hk"
        .Visible = xlSheetVeryHidden
    End With
End Sub
Apabila perlu, VBE Sheetnya pun bisa diprotect.
Selamat mencoba dan mohon masukannya.
Salam,HK
 

Fri Aug 4, 2017 3:45 am (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Dear Be-Excel,
Waktu ngebedah file2 milis tempo dulu, saya menemukan "fungsi" Collection dalam VBA.Kalo ndak salah, Collection pertama kali dikenalkan oleh Pak De Premor, ketika menjawab soal filtering data berdasarkan nama perusahaan.
Ada hal yang menarik dan belum saya dapatkan jawabannya mengenai collection tersebut (baik dalam bentuk string maupun Value.
Untuk test case saya mengambil contoh dalam bentuk value.Ceritanya begini :
Saya mempunyai data dalam bentuk Value di kolom A

Saya membuat macro seperti ini :
Sub UnikAngka()
    
    Dim SrcData As Range, Rng As Range
    Dim cKode As New Collection
    Dim LRow As Long
      
    Set SrcData = Range("A1", Range("A1").End(xlDown))
    
    On Error Resume Next
    For Each Rng In SrcData
          cKode.Add Rng.Value
    Next
    
    For LRow = 1 To cKode.Count
        Range("B" & LRow) = cKode.Item(LRow)
    Next

End Sub

Ketika saya jalankan macronya, hasilnya seoerti ini :

Tetapi jika Code berwarna merah (cKode.Add Rng.Value) saya ganti dengan :
cKode.Add Trim(Rng), CStr(Rng)

maka hasilnya menjadi unique seperti ini :

Ada beberapa hal yang menarik (menurut saya) yang ingin saya tanyakan :- Mengapa Value harus pakai Trim() dan Cstr() ?- Mengapa jika dipakai salah satu maka hasilnya tampil semua (bukan unique valuenya saja) ?- Mengapa jika dipakai keduanya ( Trim() dan Cstr() ) maka hasilnya Unique Value ?
Semoga para sesepuh yang masih bertapa ditempat sunyi maut turun gunung untuk membantu menjawabnya.
Terima kasih.
Salam,HK

Fri Aug 4, 2017 3:45 am (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Maaf ada kesalahan ketik "maut" seharusnya "mau".....

----- Forwarded Message -----From: hendrik karnadi <hendrikkarnadi@yahoo.com>To: BeExcel <belajar-excel@yahoogroups.com>Sent: Friday, August 4, 2017, 5:43:21 PM GMT+7Subject: Masalah "fungsi" Collection dalam VBA
Dear Be-Excel,
Waktu ngebedah file2 milis tempo dulu, saya menemukan "fungsi" Collection dalam VBA.Kalo ndak salah, Collection pertama kali dikenalkan oleh Pak De Premor, ketika menjawab soal filtering data berdasarkan nama perusahaan.
Ada hal yang menarik dan belum saya dapatkan jawabannya mengenai collection tersebut (baik dalam bentuk string maupun Value.
Untuk test case saya mengambil contoh dalam bentuk value.Ceritanya begini :
Saya mempunyai data dalam bentuk Value di kolom A

Saya membuat macro seperti ini :
Sub UnikAngka()
    
    Dim SrcData As Range, Rng As Range
    Dim cKode As New Collection
    Dim LRow As Long
      
    Set SrcData = Range("A1", Range("A1").End(xlDown))
    
    On Error Resume Next
    For Each Rng In SrcData
          cKode.Add Rng.Value
    Next
    
    For LRow = 1 To cKode.Count
        Range("B" & LRow) = cKode.Item(LRow)
    Next

End Sub

Ketika saya jalankan macronya, hasilnya seoerti ini :

Tetapi jika Code berwarna merah (cKode.Add Rng.Value) saya ganti dengan :
cKode.Add Trim(Rng), CStr(Rng)

maka hasilnya menjadi unique seperti ini :

Ada beberapa hal yang menarik (menurut saya) yang ingin saya tanyakan :- Mengapa Value harus pakai Trim() dan Cstr() ?- Mengapa jika dipakai salah satu maka hasilnya tampil semua (bukan unique valuenya saja) ?- Mengapa jika dipakai keduanya ( Trim() dan Cstr() ) maka hasilnya Unique Value ?
Semoga para sesepuh yang masih bertapa ditempat sunyi maut turun gunung untuk membantu menjawabnya.
Terima kasih.
Salam,HK

Fri Aug 4, 2017 7:22 am (PDT) . Posted by:

"hendrik karnadi" hendrikkarnadi

Ini contoh filenya.
Salam,HK

----- Forwarded Message -----From: hendrik karnadi hendrikkarnadi@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com>To: BeExcel <belajar-excel@yahoogroups.com>Sent: Friday, August 4, 2017, 5:46:05 PM GMT+7Subject: [belajar-excel] Fw: Masalah "fungsi" Collection dalam VBA
 

Maaf ada kesalahan ketik "maut" seharusnya "mau".....

----- Forwarded Message -----From: hendrik karnadi <hendrikkarnadi@yahoo.com>To: BeExcel <belajar-excel@yahoogroups.com>Sent: Friday, August 4, 2017, 5:43:21 PM GMT+7Subject: Masalah "fungsi" Collection dalam VBA
Dear Be-Excel,
Waktu ngebedah file2 milis tempo dulu, saya menemukan "fungsi" Collection dalam VBA.Kalo ndak salah, Collection pertama kali dikenalkan oleh Pak De Premor, ketika menjawab soal filtering data berdasarkan nama perusahaan.
Ada hal yang menarik dan belum saya dapatkan jawabannya mengenai collection tersebut (baik dalam bentuk string maupun Value.
Untuk test case saya mengambil contoh dalam bentuk value.Ceritanya begini :
Saya mempunyai data dalam bentuk Value di kolom A

Saya membuat macro seperti ini :
Sub UnikAngka()
    
    Dim SrcData As Range, Rng As Range
    Dim cKode As New Collection
    Dim LRow As Long
      
    Set SrcData = Range("A1", Range("A1").End(xlDown))
    
    On Error Resume Next
    For Each Rng In SrcData
          cKode.Add Rng.Value
    Next
    
    For LRow = 1 To cKode.Count
        Range("B" & LRow) = cKode.Item(LRow)
    Next

End Sub

Ketika saya jalankan macronya, hasilnya seoerti ini :

Tetapi jika Code berwarna merah (cKode.Add Rng.Value) saya ganti dengan :
cKode.Add Trim(Rng), CStr(Rng)

maka hasilnya menjadi unique seperti ini :

Ada beberapa hal yang menarik (menurut saya) yang ingin saya tanyakan :- Mengapa Value harus pakai Trim() dan Cstr() ?- Mengapa jika dipakai salah satu maka hasilnya tampil semua (bukan unique valuenya saja) ?- Mengapa jika dipakai keduanya ( Trim() dan Cstr() ) maka hasilnya Unique Value ?
Semoga para sesepuh yang masih bertapa ditempat sunyi maut turun gunung untuk membantu menjawabnya.
Terima kasih.
Salam,HK

Fri Aug 4, 2017 9:39 am (PDT) . Posted by:

"Mr. Kid" nmkid.family@ymail.com

Pak HK,

1. Tentang object Collection ya...
Lepaskan dari rencananya mau cari data unique lebih dulu.
Mulai dari konsep yang namanya collection.

Saya punya koleksi film seri yang kalau ditabelkan begini :
No. Film_Seri Keterangan
1. Friends Ada lengkap
2. GOT 6 seasons, sekarang season 7 episode
3
3. Designated Survivor Season 1 sudah, nunggu season 2
4. MacGyver 2016 Season 1 sudah, nunggu season 2
5. Shooter 1 seasons, sekarang season 2 episode 4
6. MacGyver lama Ada lengkap

Lalu kalau ada teman nanya tentang koleksi film seri yang saya miliki,
nanyanya pakai kalimat mana ?
a. punya film seri yang 'Ada lengkap' itu gak ? (maksudnya merujuk ke
film seri Friends)
atau
b. punya film seri 'Friends' gak ?

Sepertinya, yang umum adalah pertanyaan yang b bukan ?
Itu sebabnya, suatu koleksi, yang penting adalah nama koleksinya.
Nama koleksinya adalah kalimat yang tipenya string.
Isinya koleksi bisa macam-macam, pada koleksi di atas adalah string tentang
keterangan.
Bisa jadi 'keterangan' itu berisi keping DVD atau video files setiap
episodenya (object)
dan sebagainya.

Apapun isinya si koleksi, tetap saja yang dirujuk oleh siapapun adalah nama
koleksi yang unique.

Sekarang, pakai cerita di atas, lalu kembali ke object collection milik
VB/VBA.
Syntax untuk Add ke collection object adalah :

*object**.Add item,* *[key],* *[before],* *[after]*
Jadi dari object Collection, yang penting adalah [Key] (BUKAN item)
Key yang harus unique.
Kalau key dikosongkan, maka akan dibuatkan oleh VBA yang bersifat unique
disetiap penambahan koleksi.

Pakai baris kode Anda :
* cKode.Add Rng.Value*
itu namanya, mengandalkan item yang berupa nilai si yang disimpan range
dalam properti Value.
Key nya si collection mana ?
Karena gak diisi, maka dibuatkan oleh VB/VBA yang unique.
Jadi, pasti semua proses Add akan diterima karena key-nya dibuatkan unique
oleh VB/VBA.
Hasilnya, ketika ditampilkan nilai-nilai itemnya, dapetnya ya semua nilai
yang di-Add ke collection.
Anda sebut : hasilnya gak unique
Padahal itu unique, karena Key-nya dibuat unique oleh VB/VBA.
Anda dengan VBA masih kurang belum berteman namanya. Karena masih mudah
salah paham.

2. Tentang pakai Trim()
Maksudnya baris kode :
* cKode.Add Rng.Value*
diganti menjadi :
* cKode.Add Trim(Rng), CStr(Rng)*
penulisan idealnya kalau pakai trim dan cstr bagini :
* cKode.Add Trim(Rng.value), CStr(Rng.value)*
karena yang di-trim dan di-cstr adalah isi properti Value dari si range.
(disiplin itu kesannya susah dan gak praktis, tetapi bermanfaat)

Baris kode itu sudah mengisi nilai Key, yaitu dengan isi properti Value si
range yang dibuat jadi bertipe string (cstr).
Ini kan sesuai konsep koleksi di cerita yang ada di atas sana... Orang
kalau mau nunjuk koleksi itu pakai kalimat namanya koleksi. Pasti bertipe
string.

Kebetulan pada baris kode ini, item si koleksi diisi pakai tipe string
juga, yaitu hasil trim dari nilai properti value milik si range.
Bagian item ini, kalau di cerita di atas sana, seperti isinya 'keterangan'
Apa harus di-trim ?
*Tentu tidak...*

Kalau itemnya memang string (seperti bunyi kalimat keterangan di contoh di
atas sana), maka isilah si item dengan string nilai tersebut.
Kalau itemnya adalah object range, ya isilah dengan object range.
Kalau itemnya adalah nilai buku penjualan suatu perusahaan, isilah apa
adanya si nilai buku itu.
Kalau itemnya adalah persentase dengan angka dibelakang koma yang banyak
sekali, ya isilah sesuai kebutuhan
Bahkan, kalau isinya adalah array, ya isi saja dengan array.
Pokok e, bagian item diisi dengan nilai yang semestinya biar mudah dan
selamat. Gak usah di tram trim bikin ruwet dan nambah kerjaan buat si
VB/VBA.

Ya to...
Jadi gak repot to...
hidup sekali kok mikirin yang merepotkan...

3. Coba begini deh...
Ada tabel begini
A B C
1 NAMA ALAMAT kota
2 Agung Jl S Parman JKT
3 Seno Jl S Parman JOG
4 Agung Jl S Parman SMG
5 Seno Jl S Parman JOG

Unique berdasar kolom A, 4 records (mulai baris 2), header di baris 1 mulai
kolom A, total ada 3 kolom.
dim rng as Range, col as Collection,lRec as long
'nyusun collection berdasar kolom A, berarti hanya diambil kolom A yang
unique, pertama kali ditemukan karena bacanya dari A2 sampai A5
set coll=new collection
on error resume next
for each rng in range("a2:a5")
'item yang disiman adalah object range kolom A (range A1, range A2,
dst), key-nya unique berdasar nilai kolom A yang sudah string
coll.add rng , rng.value
next rng
err.clear
on error goto 0

'tampilkan tabel yang unique record berdasar kolom A saja, di kolom K:M (3
kolom) mulai baris 2
for lrec=1 to coll.count
range("K" & lrec+1).resize(1,3).value =
coll.item(lrec).resize(1,3).value
next lrec
range("K1:M1").value=array("NAMA","ALAMAT","kota")

'manggil pakai nama koleksinya (berdasar key yang berasal dari kolom A)
msgbox "Key : Agung" _
& "Alamat koleksi di range : " & coll.item("Agung").address
'bisa juga ditulis coll("Agung").address tapi lebih baik
coll.item("Agung").address

> dari contoh ini, gak pakai cstr dan trim bukan ?
> key diisi tanpa pakai cstr karena memang kolom A isinya sudah string. *Kalau
kolom A bukan string, maka perlu diubah jadi bertipe string pakai Cstr.
Lebih cepat lagi kalau pakai LTrim atau malah LTrim$.*
> item diisi tanpa trim, karena yang mau disimpan tidak harus string,
justru malah dicontoh itu, yang disimpan di item adalah object range.
> karena item berisi object range, maka bisa dipakai layaknya menggunakan
object range seperti baris yang di-biru
> yang baris msgbox, itu mengikuti kebiasaan bahwa suatu koleksi disebut
berdasar nama koleksinya (key).

So, contohnya mirip konsep fitur remove duplicate berdasar 1 key bukan ?
Berarti bisa bikin mirip fitur remove duplicate berdasar lebih dari 1 key
dong... hehehe... ada yang mo urun script untuk hal ini ?

Regards,
Kid

2017-08-04 17:43 GMT+07:00 hendrik karnadi hendrikkarnadi@yahoo.com
[belajar-excel] <belajar-excel@yahoogroups.com>:

>
>
> Dear Be-Excel,
>
> Waktu ngebedah file2 milis tempo dulu, saya menemukan "fungsi" Collection
> dalam VBA.
> Kalo ndak salah, Collection pertama kali dikenalkan oleh Pak De Premor,
> ketika menjawab soal filtering data berdasarkan nama perusahaan.
>
> Ada hal yang menarik dan belum saya dapatkan jawabannya mengenai
> collection tersebut (baik dalam bentuk string maupun Value.
>
> Untuk test case saya mengambil contoh dalam bentuk value.
> Ceritanya begini :
> Saya mempunyai data dalam bentuk Value di kolom A
>
> [image: Inline image]
>
> Saya membuat macro seperti ini :
>
> Sub UnikAngka()
>
> Dim SrcData As Range, Rng As Range
> Dim cKode As New Collection
> Dim LRow As Long
>
> Set SrcData = Range("A1", Range("A1").End(xlDown))
>
> On Error Resume Next
> For Each Rng In SrcData
> *cKode.Add Rng.Value*
> Next
>
> For LRow = 1 To cKode.Count
> Range("B" & LRow) = cKode.Item(LRow)
> Next
>
> End Sub
>
> Ketika saya jalankan macronya, hasilnya seoerti ini :
>
> [image: Inline image]
>
> Tetapi jika Code berwarna merah (*cKode.Add Rng.Value*) saya ganti dengan
> :
>
> *cKode.Add Trim(Rng), CStr(Rng)*
>
> maka hasilnya menjadi unique seperti ini :
>
> [image: Inline image]
>
> Ada beberapa hal yang menarik (menurut saya) *yang ingin saya tanyakan :*
> - Mengapa Value harus pakai Trim() dan Cstr() ?
> - Mengapa jika dipakai salah satu maka hasilnya tampil semua (bukan unique
> valuenya saja) ?
> - Mengapa jika dipakai keduanya ( Trim() dan Cstr() ) maka hasilnya Unique
> Value ?
>
> Semoga para sesepuh yang masih bertapa ditempat sunyi maut turun gunung
> untuk membantu menjawabnya.
>
> Terima kasih.
>
> Salam,
> HK
>
>
>
============================================================
Pojok Lowongan Kerja yang disediakan milis :
http://milis-belajar-excel.1048464.n5.nabble.com/Pojok-Lowongan-Kerja-f5725753.html
*** Posting lowongan kerja : ke link tersebut dan klik New Topic
============================================================
bergabung ke milis (subscribe), kirim mail kosong ke: belajar-excel-subscribe@yahoogroups.com
posting ke milis, kirimkan ke: belajar-excel@yahoogroups.com
berkunjung ke web milis : http://tech.groups.yahoo.com/group/belajar-excel/messages
melihat file archive / mendownload lampiran : http://www.mail-archive.com/belajar-excel@yahoogroups.com/
atau (sejak 25-Apr-2011) bisa juga di : http://milis-belajar-excel.1048464.n5.nabble.com/
menghubungi moderators & owners: belajar-excel-owner@yahoogroups.com
keluar dari membership milis (UnSubscribe), kirim mail kosong ke : belajar-excel-unsubscribe@yahoogroups.com
---------------------------------------------------------------------

Tidak ada komentar:

Posting Komentar