Tecnologia, programação e muito Visual FoxPro.

quarta-feira, 30 de junho de 2010

Re: ]] XL-mania [[ merubah angka menjadi huruf

baru sempat lihat sekilas pagi tadi; rumus kiriman mas Kid kali ini tidak seperti biasanya..

dengan data ada di A1:S32  dan contoh hasil di F1:H32
Rumus ini jika di coba (ditulis di satu cell, misal di J2) dan di copy ke kanan (3 kolom)
dan bawahnya (31 row); hasilnya belum menyamai contoh hasil yg diinginkan.

Siang ini sempat menjenguk milis, belum ada juga pertanyaan lanjutan dari pak Edy.
Ini bisa berarti bahwa hasil rumus sudah sesuai keinginan
Mungkin saja saya yg salah menuliskannya di sheet. (lihat lampiran /sheet 3)

Misalnya, pertanyaan dari pak Edy tsb belum terjawab dengan formula dari mas Kid,
(dan pak Edy belum sempat baca jawaban di milis); ini siti kirim rumus alternatifnya :

risalah konversi pelik.GIF

array formula yang ditulis sekaligus pada 3 cells sebaris
=CHAR(MOD(SMALL(B4:E4+(CODE(B$3:E$3)/100),{2,3,4}),1)*100)

sedikit penjelasan..
Kolom B:E adalah tabel data Inputnya.
Header ada di baris 3 data mulai di baris 4

komponen:  =B4:E4+(CODE(B$3:E$3)/100)
=bilangan pada area data ditambah dengan (Kode ASSCII /100) pada JudulKolom
(Header)nya: menghasilkan array empat data cells sebaris:  {1.65\2.66\3.67\0.68}
* Bagian Angka Bulat  {1  2  3  0] menunjukkan
angka asli di B:E (rujukan relatif)
* Bagian Pecahan {65  66  67  68} menunjukkan
Kode ASCII atas header  A  B  C  D (rujukan absolut)

# Rumus-nya sekarang menjadi sbb:
=CHAR(MOD(SMALL({1.65,2.66,3.67,0.68},{2,3,4}),1)*100)
Pada Komponen:  =SMALL({1.65,2.66,3.67,0.68},{2,3,4})
Fungsi SMALL bertugas mengurutkan array di dalamnya.
Karena pengurutnya {2,3,4} (bukan {1,2,3,4}) maka komponen ini menghasilkan array
3 data cells sebaris (urut menaik tanpa mengikut-serta-kan bilangan terkecil pertama yaitu
yg bilangan utuhnya = 0 (eNol) ).
     {1.65\2.66\3.67}
Note: Array Konstanta {2,3,4} dapat diganti dengan array formula (I3:K3)+1
( lihat percobaan di kolom U:W )

# Sekarang Rumus menjadi spt ini
=CHAR(MOD({1.65, 2.66, 3.67},1)*100)
Bagian terpenting telah dilalui: yaitu
tujuan untuk mengurutkan letak data (tanpa data ex 0 (eNol) di mana tiap data HARUS
masih mengandung informasi HURUF Header A/B/C/D (walaupun masih dalam bentuk
kode ASCII nya)

Lihat Komponen:  =MOD({1.65,2.66,3.67},1)
fungsi MOD(n, m) : menghasilkan Sisa Hasil Bagi  n / m.
Bilangan berpecahan jika dibagi 1, Modulus-nya adalah pecahannya,
misal  MOD(1547.25, 1)   hasilnya = 0.25
Jadi komponen ini menghasilkan array 3 data cells
{0.66\0.67\0.68}

# Saat ini rumus menjadi
=CHAR({0.65, 0.66, 0.67}*100)
setiap anggota array dikalikan 100: menghasilkan 
=CHAR({65,66,67})
yang hasil akhirnya adalah array :  {"A", "B", "C"}   !
------------------------------------------------------------------

seandainya data di range B4:E4 berupa:   2 \ 0 \ 3 \ 1
(seperti data di records no.18)
maka hasilnya adalah =CHAR({68, 65, 67})
yaitu expressi dari  "D", "A", "C"
(inga'.. inga'..!  kode ascii A s/d Z adalah 65 sd 90)

array input data {2\0\3\1} sebelum diproses mengindikasikan
A ingin diletakkan di posisi 2
B ingin diletakkan di posisi 0
C ingin diletakkan di posisi 3
D ingin diletakkan di posisi 1
dan Array FORMULA menghasilkan D\A\C
mungkin seperti itulah kehendak pak Edy Budiardjo... walaupun hanya dikatakan
dgn singkat  "merubah bentuk form > merubah angka menjadi huruf"
-----------------------------------------------------------------

bluewater, 29 jun 2010
-ctv-


2010/6/25 Mr. Kid <mr.nmkid@gmail.com>

Coba :
=INDEX($A$1:$D$1,1,MATCH(F1,$A$2:$D$2,0))

Regards.
Kid.

 
2010/6/24 Edy Budiardjo <edy_b@gt-tires.com>

Mohon bantuannya untuk merubah bentuk form di bawah ini :

A B C D 1 2 3
1 2 3 0 A B C
1 2 3 0 A B C
1 2 0 3 A B D
1 2 0 3 A B D
1 0 2 3 A C D
0 1 2 3 B C D
0 1 2 3 B C D
3 1 2 0 B C A
3 1 2 0 B C A
3 1 0 2 B D A
3 0 1 2 C D A
3 0 1 2 C D A
0 3 1 2 C D B
0 3 1 2 C D B
2 3 1 0 C A B
2 3 0 1 D A B
2 3 0 1 D A B
2 0 3 1 D A C
2 0 3 1 D A C
0 2 3 1 D B C
1 2 3 0 A B C
1 2 3 0 A B C
1 2 0 3 A B D
1 2 0 3 A B D
1 0 2 3 A C D
0 1 2 3 B C D
0 1 2 3 B C D
3 1 2 0 B C A
3 1 2 0 B C A
3 1 0 2 B D A
3 0 1 2 C D A
 
sebelumnya terima kasih

Nenhum comentário:

Arquivo do blog