Hai Leo, Sepertinya angka dalam input dianggap bilangan bulat. Contoh (data pertama) : ID BA 6.708 Marsius K -> 6708 ID BA 6,497S. Sada -> 6497 dari dua data di atas, tampak inkonsistensi input. Untuk dianggap sebagai bilangan bulat dengan format number regional setting yang berbeda, masih bisa diterima.
Kejanggal pada data kedua berikut ini :
ID Ramli BA1.6360 -> 16360
ID BA1,5518 Ayu Asmarani -> 15518
jika tetap dinyatakan angka pada data adalah bilangan bulat, berarti entry
oleh user memiliki tingkat kesalahan yang tinggi. Sebaiknya mulai
diperhatikan.
Jika ternyata angka pada data tidak mesti bilangan bulat, maka inkonsistensi
penggunaan pemisah ribuan dan tanda desimal tidak dapat ditolerir. Bisa
dibayangkan bagaimana cara menganggap data pertama adalah data tanpa
desimal, dan data kedua adalah data dengan desimal. Masih untung jumlah
digit dibelakang koma atau titik pada data pertama (3 digit) berbeda dengan
pada data kedua (4 digit). Bagaimana kalau sama ?
Validasi data ketika entry diperlukan untuk standarisasi.
btw, usaha untuk ambil angka dengan formula bisa dengan cara berikut.
jika akan diambil angkanya saja, dapat dilihat dengan jelas bahwa :
1. angka selalu setelah 'BA'
2. kadang disisipi spasi antara 'BA' dengan angka
3. angka hanya pada 1 bagian saja. Sebelum dan sesudahnya tidak akan ada
angka lagi.
4. jumkah digit output tidak pasti jumlah maksimalnya
Pada data A2, hasil diletakkan pada baris 2 selain kolom A :
Untuk mendapatkan karakter pertama dari angka adalah mencari posisi 'BA'
dengan fungsi Find yang bersifat Case Sensitive. Angka pertama adalah 2
karakter setelah BA, meskipun kadang kala bertemu spasi lebih dulu.
Untungnya, Excel mampu mengkonversi teks angka menjadi bilangan, meskipun
didahului atau diakhiri dengan spasi.
Untuk mengambil teks dari suatu posisi karakter dengan jumlah karakter
tertentu, menggunakan fungsi Mid
Jadi sudah dapat :
Mid( *suatu_teks* , *Find( "BA" , A2 ) + 2* , 99 )
Akibat asumsi ke-4, angka terakhirnya dimana ?
Dengan berpegang pada asumsi ke-3, maka dapat disimpulkan bahwa *angka
terakhir* adalah *karakter yang bisa dikonversi menjadi bilangan* *yang
ditemukan terakhir*.
Langkah pertama harus bisa mendapatkan hasil konversi ke bilangan dari tiap
karakternya. Biasanya dengan :
--Mid( A2 , row( $1:$99 ) , 1 )
jika jumlah karakter data (panjang teks) maksimal 99 karakter. Ganti 99
dengan nilai lain yang lebih mendekati dari max panjang teks setiap data.
Jika bertemu angka (dari 0 sampai 9), akan menghasilkan angka 0 sampai 9.
Jika tidak, akan menghasilkan error value.
Untuk *mencari data terakhir* *yang sesuai atau yang benar* yang akan
diambil (yang nya banyak amat), bisa menggunakan fungsi Match dengan cara
pembandingan Less Than atau match_type pada fungsi Match adalah 1. (pakai
LookUp juga bisa, kalau suka LookUp, cukup menambahkan posisi karakter
sebagai result_vector)
Karena menggunakan *match_type = 1*, maka *lookup_value* untuk fungsi Match
*harus lebih tinggi dari* *nilai tertinggi yang mungkin dari lookup_array*.
Lookup_array yang digunakan adalah formula --Mid di atas.
Karena hasil --Mid di atas selalu hasilnya dari 0 sampai 9 atau error value,
maka lookup_value harus lebih tinggi dari 9, misalnya 10.
Kalau begitu, konversinya dikurangi 1 saja, agar nilai look_up value bisa
bernilai 9 (biar mudah mengingatnya).
--Mid diatas diubah menjadi :
Mid( A2 , row( $1:$99 ) , 1 ) - 1
Sekarang komponen Match sudah lengkap,
lookup_value adalah 9
lookup_array adalah fungsi Mid - 1 barusan
match_type adalah 1 (less than) atau diabaikan (ambil default fungsi Match)
*Karena memproses array berisi tiap karakter, maka bentuknya array formula*.
Berikut ini rupa si match :
*MATCH(9,MID(A2,ROW($1:$99),1)-1)*
Sekarang, bisa dapat teks dari karakter pertama data sampai karakter angka
terakhir :
*LEFT( A2,* *MATCH( 9 , MID( A2 , ROW( $1:$99 ) , 1 ) - 1 )* *)*
*Hasil formula Left ini* yang menjadi *suatu_teks* pada formula :
Mid( *suatu_teks* , *Find( "BA" , A2 ) + 2* , 99 )
menjadi :
Mid( *LEFT( A2,* *MATCH( 9 , MID( A2 , ROW( $1:$99 ) , 1 ) - 1 )* *)* , *Find(
"BA" , A2 ) + 2* , 99 )
Inilah array formula dasar untuk mengambil angka.
---
Ingat, *setelah 'BA' terkadang ada spasi*. Jadi fungsi Trim bisa diterapkan
untuk menghilangkan spasi gak mesti ini jika ingin dapat hasil apa adanya
yang tertulis di data.
Array formula menjadi :
Trim( Mid( *LEFT( A2,* *MATCH( 9 , MID( A2 , ROW( $1:$99 ) , 1 ) - 1 )* *)*,
*Find( "BA" , A2 ) + 2* , 99 ) )
---
Jika memang pasti bilangan bulat, maka inkonsistensi penggunaan karakter
koma dan titik pada angka, harus dihilangkan agar bisa mengkonversi hasil
array formula Mid di atas menjadi sebuah bilangan (datatype numerik). Pakai
Substitute 2 kali. Substitute pertama untuk hilangkan koma. Substitue kedua
untuk hilangkan titik. Sebaliknya juga bisa yang penting hepi dan ikhlas.
Begini wujudnya : (sim salabim)
*--**SUBSTITUTE(**SUBSTITUTE(*
MID(LEFT(A2,MATCH(9,MID(A2,ROW($1:$99),1)-1)),FIND("BA",A2)+2,99)*,",","")**
,".","")*
tanda -- untuk konversi teks ke bilangan berupa nilai negatif dari suatu
data yang telah dinegatifkan.
-------------
File terlampir untuk bahan percobaan.
Regards.
Kid.
2011/4/9 leo pcs <[email protected]>
>
>
> Dear All
>
> Kadang kala ada pekerjaan yang bisa kita atasi dan ada juga kendala yang
> dihadapi. seperti kendala yang saya hadapi sekarang ini, yaitu mengambil
> kriteria tertentu berupa "Angka" yang ada pada gabungan kriteria huruf,
> symbol, angka dan lainnya. kiranya teman-teman bisa membantu kendala yang
> saya hadapi.
>
> Best Regards,
>
> Leo
>
>
re-Kriteria Angka.xls
Description: MS-Excel spreadsheet

