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]
<<image/gif>>

