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>>

Kirim email ke