hai rajendra,

modifikasi formula vidi menjadi sebagai array formula (ctrl+shift+enter) di
cell check digit :
=CEILING(SUM(MID((MOD(ROW($1:$8)+1,2)+1)*MID($K7
,ROW($1:$8),1)&0,{1,2},1)+0),10)-SUM(MID((MOD(ROW($1:$8)+1,2)+1)*MID($K$7,ROW($1:$8),1)&0,{1,2},1)+0)

$K7 adalah cell kode aset
Jika kode aset suatu saat mengalami perubahan jumlah, maka $8 dalam
row($1:$8) sebagai jumlah digit kode asset.

kid.


2009/2/24 R M A <[email protected]>

>   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 <*rajendra.ma* 
>> <http://rajendra.ma/>@*gmail.com*<http://gmail.com/>
>> >
>> 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>>

Kirim email ke