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

