Kalo gak boleh pake formula MID sepertinya gak bisa deh.. Tapi kalo gak pake perantara & boleh pake formula MID bisa sih.. Formula sebelumnya diedit dulu dikit.. Jadinya seperti ini..
Misal : Kode akses ada di cell A1 =CEILING(SUM(MID((MOD(COLUMN($A$1:$H$1)-1,2)+1)*MID(A1 ,COLUMN($A$1:$H$1),1)&0,ROW($1:$2),1)+0),10)- SUM(MID((MOD(COLUMN($A$1:$H$1)-1,2)+1)*MID(A1,COLUMN($A$1:$H$1),1) &0,ROW($1:$2),1)+0) Jgn lupa eksekusi dgn CSE.. cheers, VD R M A <[email protected]> Sent by: [email protected] 02/24/2009 09:48 AM Please respond to [email protected] To [email protected] cc Subject Re: ]] XL-mania [[ Rumus mencari Check Digit terimakasih mas vidi dan mbak siti atas solusinya... terutama solusi terakhir tanpa cell perantara, (maaf mbak siti, saya gaptek makro) tapi, mau nambahin soal nih... karena asset code ini, di maintain oleh semua departemen dan akhirnya di satuin kembali oleh GA dan dikembalikan ke finance, masalah sebenarnya lebih pelik. Karena tidak semua departemen yang memaintain asset tadi mencantumkan asset code ini dalam 8 kolom, ada yang langsung disatukan dalam satu cell saja. Cara gampang adalah dengan membuat kolom pembantu dengan formula mid sehingga asset code yang tadinya hanya satu kolom menjadi delapan kolom dan baru dapat dicari check digitnya. Nah, bagaimana formula mencari check digit ini, jika delapan digit asset code tadi berada dalam satu cell, tanpa menggunakan cell perantara dan formula mid? format cell ini ada yang text ada juga yang general.... Terimakasih banyak Pada 23 Februari 2009 13:19, <[email protected]> menulis: Tanpa perantara juga bisa kok.. Kalo pake fungsi IF jadinya emang panjang sih makanya butuh banyak perantara.. coba aja pake Array formula dibawah ini.. Jgn lupa Ctrl+Shift+Enter.. Kalo nilai awal kode asset dimulai di kolom genap ( B,D,F,H,.... ) misal : kode asset di kolom D2:K2 =CEILING(SUM(MID((MOD(COLUMN($D2:$K2),2)+1)*$D2:$K2&0,ROW($1:$2),1)+0),10)- SUM(MID((MOD(COLUMN($D2:$K2),2)+1)*$D2:$K2&0,ROW($1:$2),1)+0) Kalo nilai awal kode asset dimulai di kolom ganjil ( A,C,E,G,.... ) seperti di case yg dikasih, kode asset ada di kolom C2:J2.. Maka rumusnya spt ini : =CEILING(SUM(MID((MOD(COLUMN($C2:$J2)-1 ,2)+1)*$C2:$J2&0,ROW($1:$2),1)+0),10)- SUM(MID((MOD(COLUMN($C2:$J2)-1,2)+1)*$C2:$J2&0,ROW($1:$2),1)+0) cheers, VD siti Vi <[email protected]> Sent by: [email protected] 02/23/2009 02:27 PM Please respond to [email protected] To [email protected] cc Subject Re: ]] XL-mania [[ Rumus mencari Check Digit mohon maaf sudah lewat seminggu masih "nge"-thread ke topik ini; soalnya kasusnya cukup menarik, dan dari pc isti kelihatannya baru ada 1 tanggapan. mas kid sebenarnya sudah menjelaskan melalui formula (yg harus banyak dibantu oleh formula perantara di cells lain. disinggung pula, solusi lain adalah dengan udf makro (fungsi yg dibuat sendiri melalui makro) coding udf-nya spt apa? salah satu-nya kira-kira seperti ini: '=== versi puisi ===' Function ChexDigit(Num As Long) As Long '----------------------------------------- ' siti Vi / mecari Nilai Digit ke 9 ' jkt-bluewater, 21 feb 2009 '------------------------------------------ Dim x(1 To 8) As Integer, y(1 To 8) As Integer Dim z(1 To 9) As Integer, newZ As Integer Dim i As Byte, n As Byte If Len(CStr(Num)) <> 8 Then Exit Function For i = 1 To 8 x(i) = CInt(Mid(Num, i, 1)) y(i) = IIf(i Mod 2 = 0, 2, 1) z(i) = x(i) * y(i) Next i For i = 1 To 8 If z(i) > 9 Then newZ = 0 For n = 1 To Len(z(i)) newZ = newZ + CInt(Mid(z(i), n, 1)) Next n z(i) = newZ End If z(9) = z(9) + z(i) Next i z(9) = WorksheetFunction.Ceiling(z(9), 10) - z(9) ChexDigit = CLng(CStr(Num) & z(9)) End Function ---------------------------------------- '=== versi dongeng ===' Function ChexDigit(Num As Long) As Long '-------------------------------------- ' siti Vi: menebak nilai Digit ke 9 ' jkt-bluewater, 21 feb 2009 '-------------------------------------- Dim x(1 To 8) As Integer ' array data (kode aktiva) yg diurai Dim y(1 To 8) As Integer ' array data pengali Dim z(1 To 9) As Integer ' aray data hasil kali, (selain z(9) ) Dim newZ As Integer ' penampung olahan elemen z(n) Dim i As Byte, n As Byte ' counter / pencacah looping ' jika length of data BUKAN 8 digit = cuekin ajah..! If Len(CStr(Num)) <> 8 Then Exit Function ' mengisi elemen tiap array sesuai 'aturan main'-nya For i = 1 To 8 x(i) = CInt(Mid(Num, i, 1)) y(i) = IIf(i Mod 2 = 0, 2, 1) z(i) = x(i) * y(i) Next i ' komputasi lebih lanjut khusus untuk elemen z(i) yg > 9 For i = 1 To 8 If z(i) > 9 Then newZ = 0 For n = 1 To Len(z(i)) newZ = newZ + CInt(Mid(z(i), n, 1)) Next n z(i) = newZ End If ' hasil komputasi di-akumulasikan di elemen z(9) z(9) = z(9) + z(i) Next i ' tendangan terakhir untuk nilai z(9) z(9) = WorksheetFunction.Ceiling(z(9), 10) - z(9) ' array z() digabung kembali menjadi 1 bilangan 9 digit ' sambil diumpankan ke variable namaFungsi ChexDigit = CLng(CStr(Num) & z(9)) End Function hasil fungsi ChexDigit di woksit, apakah benar, ataukah nguawurr, bisa dilihat di wokbuk lampiran ctv 20/2/2009 2009/2/15 R M A <[email protected]> Mohon bantuan pakar excel semua, untuk problem terlampir -- R M A [attachment "ctv_Problem ChekDigit.xls" deleted by Vidi Ardyanto/TJ0987/JOC/ID] -- R M A http://maskokilima.wordpress.com
<<image/gif>>
<<image/gif>>

