Kalo yang tanpa macro (udf) tetapi masih menggunakan cell bantu, Silahkan dicoba file terlampir.
________________________________________ From: belajar-excel@yahoogroups.com [mailto:belajar-ex...@yahoogroups.com] On Behalf Of siti Vi Sent: Tuesday, January 26, 2010 1:09 PM To: belajar-excel@yahoogroups.com Subject: Re: [belajar-excel] (unknown) Dear Mas Cakil... mas Herrsoe ini punya tiga nama.... kalau tanggal muda namanya HerrSoe(+timbul) kalau tanggal tua namanya HerrSoe(+cakil) he he.. siti senang dgn humornya mas HerrSoe ini... Modifikasi UDF GetNumber untuk keperluan seperti itu mungkin "jalan-ceritaknya" begini : # loop kunjungan ke semua karakter dlm string yg diproses dari karakter paling kiri ke kanan, setiap karakter yg sedang dikunjungi di masukkan ke variable k # test Apakah k adalah salah satu dari karakter dlm string "1234567890.," ? Jika YA * jika k = "." (TITIK) , titiknya dicatat-hitung test sudah ketemu TITIK lebih dari sekali ? jika YA: TITIK dicuekin (k = Blank) *jika k = "," (KOMA), KOMA di-cuekin (k = Blank) k ditampung-gabung dalam sebuah variabel string Temp Jika TIDAK (artinya k bukan salah satu dari "1234567890.," * test/lihat dulu variable Temp sudah ada isinya / belum? ** jika belum: teruskan kunjungan ke karakter berikutnya ** jika sudah: akhiri acara kunjungan ke setiap karakter (walaupun belum semua terkunjungi) Pukulan terakhir: variable Temp (yg bisa berisi bilangan dlm bentuk string) dikonversi menjadi bilangan; tetapi jika lebarnya lebih dari 15 digit, biarkan sbg string (karena akan dituliskan di cell excel yg hanya presisi pada bilangan max 15 digit) Function GetNumber(S As String) '----------------------------------- ' UDF mengambil substring "bilangan" ' revisi V2 / 26 jan 2010 '------------------------------------ Dim i%, tmp$, k$, dot% For i = 1 To Len(Trim(S)) k = Mid(Trim(S), i, 1) If InStr(1, "0123456789.,", k) > 0 Then If k = "." Then dot = dot + 1 If dot > 1 Then k = "" If k = "," Then k = "" tmp = tmp & k Else If Len(tmp) > 0 Then Exit For End If Next i GetNumber = IIf(Len(tmp) > 15, tmp, CDec(tmp)) End Function ----- Original Message ----- From: HerrSoe To: belajar-excel@yahoogroups.com Sent: Tuesday, January 26, 2010 11:31 AM Subject: Re: [belajar-excel] (unknown) Terima kasih UDF "GetNumber" - nya... bermanfaat untuk pekerjaan kami. Keperluan kami kadang harus mengambil angka dari data string spt ini (Pola letak "SubString bilangan" tidak beraturan, bisa di mana saja) XLKJ FOIUR OIUR 999,874,940.5000 OIUROIU 31 SOIUA OIU 15.0983484098 ABCDFRGT JDLKJ DLKJ 123 XXQ Dengan UDF GetNumber menghasilkan 999 dan 15 Rupanya begitu ketemu KOMA atau TITIK (bukan angka) maka pencarian ANGKA dihentikan karena angka setelah KOMA atau TITIK dianggap rangkaian berikutnya. Hasil yang diinginkan 999874940.5 15.0983484098 type data = number Mohon diberi penjelasan cara memodifikasi UDF tsb sehingga dapat mengenal rangkaian angka yg membentuk bilangan yg didalamnya terdapat KOMA dan TITIK. (KOMA = tanda Pemisah Ribuan, TITIK = tanda Pemisah Desimal) Terima kasih.. HerrSoe(+cakil) _,_._,___ __________ Information from ESET NOD32 Antivirus, version of virus signature database 4805 (20100125) __________ The message was checked by ESET NOD32 Antivirus. http://www.eset.com
ambilAngkaReal.xls
Description: MS-Excel spreadsheet