Tecnologia, programação e muito Visual FoxPro.

quarta-feira, 18 de maio de 2011

Re: ]] XL-mania [[ Execute base on Condition

1. Jika syaratnya :
>> A. Hanya data dengan nilai kolom A yang sama
>> B. Nilai kolom C harus > 1
>> C. Nilai kolom D harus > 0,01
>> D. Nilai kolom E harus < 50
>> E. Semua dari A sampai D harus terpenuhi
Maka penyusunan kondisi :
(A22:A$172=A22)*(C22:C$172>1)*(D22:D$172>0.01)*(E22:E$172<50)
sudag pas. Artinya, bisa dijadikan kondisi untuk ambil nilai tertentu (dalam hal ini nilai kolom C) dan yang tidak sesuati di set nilainya FALSE (default fungsi IF)

Hasilnya dari IF akan jadi array untuk lookup.

Semua oke.

2. harus pak Fran yang jawab ya ?
Coba lihat step-by-step kalkulasi yang disediakan oleh excel melalui fitur di menu Formulas -> Evaluate Formula
Kalau mau dituangkan ke gambaran yang lebih enak dibaca, seperti file terlampir.

3. Tanda error hasil error checking : omits the adjacent cell
Sebenarnya ini bukan error, tapi peringatan dari Excel, bahwa formula di cell tersebut mengabaikan cell bersinggungan dalam referensi yang digunakan formula. Pengaruh atau tidaknya, kalau dari sisi kasusnya, gak ada pengaruh. Dari sisi ngotorin pandangan, bisa jadi ada pengaruhnya.

Error checking ini bisa dihilangkan untuk hal yang lebih bersifat peringatan, sehingga yang ditampilkan murni yang berpotensi menghasilkan error yang lebih fatal (maksudnya yang lebih bikin pusing karena hasilnya pun gak bener).
Cara set ada di Excel Option, yang diakses lewat Office Button (pojok kiri atas layar bunder besar) -> Excel Option (dekat kanan bawah dialog yang muncul)
Lalu ke page Formulas -> bagian Error checking rules -> uncheck yang gak perlu. Nah masalah perlu sama tidaknya, relatif.

Regard,
Kid.
2011/5/18 Fano The Miner <fano.theminer@yahoo.co.id>

Dear Mr. Kid & Mr. Franciscus SOG

 

Thank you very, very much atas penjelasan yang diberikan. I've got big Knowledge from You All..

Saya punya beberapa pertanyaan untuk masing2. :-D

 

1.     Dear Mr. Kid.

 

Thank you very, very much Again.

Penjelasan yang sangat detail. Sudah detail sekali yang Mr. Kid paparkan (walopun saya butuh beberapa hari utk mencoba mengerti.. hehe.. tapi sudah lebih dari rada2 jelas buat saya.. hehe... Thanks.

 

Saya ingin dikoreksi:

Seperti yang Mr. kid jelaskan : [Yang dicari pada kasus ini adalah nilai terakhir dari nilai-nilai yang lebih dari 1 untuk kode tertentu saja]

nilai-nilai yang lebih dari 1 merupakan kondisi yang ada di kasus ini

[=ISNUMBER(MATCH(9^9,IF((A22:A$172=A22)*(C22:C$172>1),C22:C$172),1))*1].

Yang berarti data pada kolom value yang di cari adalah nilai > 1.

 

Saya punya beberapa kondisi yang jika di gambarkan seperti ini : nilai kolom VALUE > 1, nilai kolom VALUE_B>0.01 dan kolom VALUE_C<50

Apakah benar untuk formula untuk kondisi di atas seperti ini??

=ISNUMBER(MATCH(9^9,IF((A22:A$172=A22)*(C22:C$172>1)*(D22:D$172>0.01)*(E22:E$172<50),C22:C$172),1))*1

Hasil di kolom EXECUTE sudah sesuai dengan yang saya inginkan, saya hanya ingin di koreksi apakah formula yang saya buat sudah benar? Sekaligus untuk meyakinkan diri saya yang sementara ini agak rada-rada mengerti dengan formula yang Mr. kid berikan.. hehe… Terima Kasih buat Mr. Kid. J (file attached)

 

 

 

base.jpg

 

 

2.     Dear Mr . Franciscus SOG

 

Terima Kasih banyak atas penjelasannya. Great Explanation.

Seperti penjelasan Mr. Franciscus SOG no. 3 tentang Ctrl+Shift+Enter, saya ingin bertanya, dikarenakan hasilnya pasti beda dengan hanya menekan Enter, Perbedaan secara KONSEP seperti apa? Terima kasih sebelumnya.

3. Apa fungsi (mengakhiri penulisan formula dengan menekan bersama

tombol Ctrl Shift Enter) ? Untuk mengeksekusi formula Array. Coba

ditekan ENTER saja, hasilnya pasti beda.

 

 

1 Pertanyaan lagi : Kenapa pada saat eksekusi, setelah baris pertama ada notifikasi ERROR, apakah berpengaruh besar?

 

base2.jpg

 

 

Terima Kasih Buat All The Excell Master.

 

Salam

 

M . Irfan

Mining Engineer - BGM Mining Operation

PT ANTAM (Persero) Tbk, UBPN-MU

fano.theminer@yahoo.co.id | irfan@antam.com

+62812 1813 9359

"The Mind Is Like A Parachute, It Only Works When It's Open.."

 

 

 

From: XL-mania@yahoogroups.com [mailto:XL-mania@yahoogroups.com] On Behalf Of Mr. Kid
Sent: Saturday, May 14, 2011 5:24 PM
To: XL-mania@yahoogroups.com
Subject: Re: ]] XL-mania [[ Execute base on Condition

 

 

Dear Irfano,

Penjelasan :
=ISNUMBER(MATCH(9^9,IF((A22:A$172=A22)*(C22:C$172>1),C22:C$172),1))*1

IsNumber : cek apakah numerik ?
*1 : untuk konversi TRUE atau FALSE menjadi numerik 1 atau 0
Match : Untuk mendapatkan nomor index array di lookup array berdasar suatu nilai yang di lookup (lookup value) menggunakan cara perbandingan tertentu (match type)
Match_Type : digunakan 1, untuk mencari yang sama atau kurang dari lookup value.

Sampai sini sudah betul semua.

Lookup_value : digunakan 9^9 dengan asumsi bahwa nilai ini tidak pernah dicapai oleh data yang di-input-kan. Dengan begitu, Match akan bekerja memeriksa seluruh item array lookup, karena tidak pernah ketemu nilainya.
Lookup_Array : disusun dengan formulasi kondisi, untuk membentuk datatype array lookup yang sesuai kebutuhan.

Yang dicari pada kasus ini adalah nilai terakhir dari nilai-nilai yang lebih dari 1 untuk kode tertentu saja.
nilai terakhir berarti menuntut pemeriksaan seluruh item array, dan lookup value sudah memenuhi asumsi (tidak ada input data sampai senilai 9^9)
nilai-nilai yang lebih dari 1 berarti hanya nilai lebih dari 1 yang harus jadi elemen array lookup
kode tertentu saja berarti lookup array harus dari kode tertentu saja.
dan satu lagi yang harus diingat, yaitu :
Lookup dalam excel selalu bekerja pada datatype yang sama.

Dengan semua keadaan tersebut,  :
1. Yang dilookup adalah numerik, maka lookup array harus berisi numerik yang diperlukan saja
2. Semua data yang tidak diperlukan diubah menjadi bukan numerik

IF bisa menjadi alat untuk menyusun lookup array.
Bagian kondisi adalah penentu nilai yang boleh jadi elemen array, yaitu yang kodenya sesuai dan nilainya > 1 (udah betul)
Untuk bagian kondisi ini,
A. seluruh nilai yang bukan nol ( <> 0 ) dianggap TRUE oleh IF.
B. perkalian TRUE atau FALSE dengan TRUE atau FALSE akan menghasilkan 1 atau 0

Jika kondisi TRUE atau 1 (hasil perkalian bagian kondisi), maka isi dengan nilai data yang ada
Jika kondisi FALSE atau 0, maka isi dengan suatu nilai yang bukan numerik, misal sebuah teks, nullstring, atau boolean TRUE or FALSE. Nah default kondisi salah si fungsi IF adalah boolean FALSE.

Maka fungsi IF ini akan membentuk satu array yang sesuai harapan, yaitu numerik yang selalu > 1 dan FALSE seperti :
{ 1.2 , FALSE , FALSE , 1.5 , 2.7 , 1.01 , FALSE }

Lookup value 9^9 = 387420489 tidak pernah ketemu data, dan karena match_type adalah 1, maka data terakhir numerik yang dipakai, dalam contoh di atas adalah index elemen array untuk nilai elemen 1.01, yaitu 6

Pada kasus ini, posisi nilai data > 1 terakhir adalah patokan untuk penentuan akan dieksekusi atau tidak. Sekarang mari kita lihat, ketika array hasil Match berisi FALSE seluruhnya.
Hasil Match adalah error value #N/A, artinya tidak ada numerik yang > 1 untuk kode tersebut (bagian kondisi IF).
Fungsi ISNUMBER bertugas disini, seperti jaga gawang aja...

Dengan pertimbangan :
1. Nilai > 1 terakhir lah yang menjadi patokan eksekusi atau tidak. (jika ada nilai terakhir dibawah sana ~ hasil match bukan error value maka baris ini masih dieksekusi)
2. data yang banyak (pertimbangan sekunder)
Maka dibuatlah running reference. Perhatikan karakter $
A22:A$172
Cell awal yang diproses selalu mulai dari baris data tersebut, tetapi cell akhir selalu tetap, yaitu record terakhir tabel.

Kira-kira sudah rada jelas ya... kalau belum jelas, silakan tanya lagi.

Kid.

2011/5/14 Irfano Miner <fano.theminer@yahoo.co.id>

 


Nenhum comentário:

Arquivo do blog