Sisa hasil bagi (Modulus ) angka desimal

61 views
Skip to first unread message

Heru Safrudin

unread,
Feb 27, 2024, 11:19:01 PMFeb 27
to milis Belajar-Excel
Dear member milis Belajar-Excel,

Kenapa di vba sisa hasil bagi dari nilai desimal kok nol ?
Contoh :
10.4 mod 10  hasilnya 0
Bukankah harusnya hasilnya 0.4 ?

Mohon pencerahannya

Wassalam,
Heru Safrudin

Mr. Kid

unread,
Feb 27, 2024, 11:28:43 PMFeb 27
to milis Belajar-Excel
Lihat term n cond dari VB function Mod disini.

Jika ingin mod yang menggunakan tipe data float, pakailah function Mod milik Excel.
Di Excel cells : =Mod(10.4,10)
Di VBA : evaluate("=Mod(10.4,10)")

Regards,
Kid








--
You received this message because you are subscribed to the Google Groups "milis Belajar-Excel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to milis-belajar-e...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/milis-belajar-excel/3349b81e-4799-4213-9b29-cc627b117c92n%40googlegroups.com.

Heru Safrudin

unread,
Feb 28, 2024, 1:32:00 AMFeb 28
to milis Belajar-Excel
Oh baru tau yang kayak gini, terima kasih banyak Mr. Kid

Mr. Kid

unread,
Feb 28, 2024, 1:42:31 AMFeb 28
to milis Belajar-Excel
beberapa excel function bisa digunakan di VBA melalui object worksheetfunction, misal RoundUp
debug.print worksheetfunction.roundup( 10.4 , 0 ) 'hasilnya 11
setara dengan :
debug.print evaluate("=roundup( 10.4 , 0 )")

atau jika dijalankan langsung di VBE immediate window (tekan CTRL G untuk menampilkannya) 
? worksheetfunction.roundup( 10.4 , 0 )
? evaluate("=roundup( 10.4 , 0 )")


Regards,
Kid


Heru Safrudin

unread,
Feb 28, 2024, 2:05:15 AMFeb 28
to milis Belajar-Excel
Wah... seandainya fungsi mod juga bisa pakai worksheetfunction tentu lebih mantep, soalnya kita mau aplikasikan fungsi mod menggunakan variabel, jadi ribet ya

Wassalam,
Heru Safrudin

NangAgus

unread,
Mar 3, 2024, 10:59:45 AMMar 3
to milis Belajar-Excel
Bagaimana jika desimalnya dihilangkan dahulu, kemudian dipakai fungsi modulo, dan desimalnya dikembalikan lagi.
(dikalikan dahulu, dan dibagi lagi)
Kira-kira bisa apa tidak Ya .............?

Mr. Kid

unread,
Mar 3, 2024, 9:14:19 PMMar 3
to milis Belajar-Excel
Public Sub xlMODdiVBA()
    Dim dblNilai As Double, dblPembagi As Double, dblHasil As Double
    dblNilai = 19.75
    dblPembagi = 5.5
    dblHasil = dblNilai - Fix(dblNilai / dblPembagi) * dblPembagi
    dblHasil = Evaluate("=Mod(" & dblNilai & "," & dblPembagi & ")")
End Sub

Heru Safrudin

unread,
Mar 4, 2024, 12:00:14 AMMar 4
to milis Belajar-Excel
Dear Mr. Kid,

Kenapa di kompi saya musti minta ganti koma ke titik, sbb

    dblHasil = Evaluate("=Mod(" & Replace(dblNilai, ",", ".") & "," & Replace(dblPembagi, ",", ".") & ")")

Mr. Kid

unread,
Mar 4, 2024, 12:02:20 AMMar 4
to milis Belajar-Excel
oh karena komputernya menggunakan regional setting Indonesian atau Excel Options Advanced nya di set paksa pakai , sebagai decimal separator



Heru Safrudin

unread,
Mar 4, 2024, 3:20:11 AMMar 4
to milis Belajar-Excel
Iya bener Mr, sistem saya set regional Indonesia. Ternyata vba gak mentolerir

Mr. Kid

unread,
Mar 6, 2024, 5:08:38 PMMar 6
to milis Belajar-Excel
Jika akan menggunakan function Evaluate di Excel yang bekerja pada regional setting selain EN, maka :
1. set dulu supaya Excel bekerja dengan separator yang sama dengan EN
2. eksekusi baris script evaluate
3. set balik supaya excel bekerja dengan separator sesuai regional setting komputer.

kira-kira contohnya begini :
with application
     'no 1
     .UseSystemSeparators=false
     .DecimalSeparator="."
     .ThousandsSeparator=","
     'no 2
     debug.print evaluate("=mod(10.4,10)")
     'no 3
     .UseSystemSeparators=true
end with

Regards,
Kid



Heru Safrudin

unread,
Mar 7, 2024, 8:21:20 PMMar 7
to milis Belajar-Excel
Masya Allah.. Alhamdulillah..... terima kasih Om Kid

Jazakallahu khoir,
Heru Safrudin
Reply all
Reply to author
Forward
0 new messages