Betul Mr Kid, pasti ada yang salah..... Rasa penasaran telah terselesaikan dengan mengubah formula di UDF dari :PhKP = 1000 * Round(PhKP / 1000, 0)menjadi PhKP = WorksheetFunction.RoundDown(PhKP, -3) (sesuai pembulatan dalam formula) Saya kutip juga penjelasan yang diberikan oleh mas NangAgus berikut ini :Yang salah hanya yang datanya memiliki tiga digit terakhir lebih dari 500;..> baris ke 12 3 digit terakhir= 565->baris ke 13: 3 digit terakhir = 987 Dengan fungsi Round, jika tiga angka terakhir 500 atau lebih maka angka PhKP akan dibulatkan ke atas (seribu)......Pada baris ke 12 tarip batas atasnya sdh mencapai 30% sehingga perhitungan UDF lebih besar 300.Pada baris ke 13 tarip batas atasnya masih 25% sehingga perhitungan UDF lebih besar 250 saja.
Dengan Fungsi RoundDown maka angka PhP selalu dibulatkan kebawah dalam ribuan (PhKP ,-3), sesuai peraturan pajak. Sekali lagi terima kasih kepada Mr. Kid dan mas NangAgus atas pencerahannya.. Salam,HK ----- Forwarded message ----- From: 'Mr. Kid' [email protected] [belajar-excel] <[email protected]>To: BeExcel <[email protected]>Sent: Sunday, 26 May 2019, 10:34:13 pm GMT+7Subject: Re: [belajar-excel] UDF PPh21 Berarti,Kalau hitungan formulanya yang benar, maka penggunaan round di udf-nya yang salah.Kalau hitungan udf-nya yang benar, maka penggunaan round di formula-nya yang salah. Simpelkan... On Sun, May 26, 2019 at 9:48 PM hendrik karnadi [email protected] [belajar-excel] <[email protected]> wrote: Terima kasih atas jawabannya mas NangAgus. Yang membuat saya masih penasaran adalah:Kan untuk perhitungan dengan UDF maupun formula...keduanya menggunakan dasar pehitungan yang sama, yaitu PhKP dibulatkan ke bawah dalam ribuan. Salam,HK Sent from Yahoo Mail on Android On Sun, May 26, 2019 at 20:46, Agus [email protected] [belajar-excel]<[email protected]> wrote: Pak Hendrik, Yang salah hanya yang datanya memiliki tiga digit terakhir lebih dari 500; ..> baris ke 12 3 digit terakhir= 565 ->baris ke 13: 3 digit terakhir = 987 Coba semua baris diberitiga digit terakhir lebih dari 500, akan menjadi berbeda semua salam NangAgus On 5/26/2019 14:03, hendrik karnadi [email protected] [belajar-excel] wrote: Kayaknya sih memang masalah pembulatan Mr.Kid. Yang membuat saya penasaran, mengapa hanya terjadi pada 2 baris itu saja. Salam, HK Sent from Yahoo Mail on Android On Sun, May 26, 2019 at 4:34, 'Mr. Kid' [email protected] [belajar-excel] <[email protected]> wrote: Mungkin karena round Sent from my smart enough phone On May 25, 2019, at 20:48, hendrik karnadi [email protected] [belajar-excel] <[email protected]> wrote: Dear Be-Excel, Untuk mengisi waktu luang di malam minggu, saya mencoba me-lihat2 kembali warisan Alm. Mbak Siti (Senior kita). Di situ saya menemukan UDF untuk menghitung Penghasilan Kena Pajak, yang secara aturan dibulatkan kebawah (dalam ribuan). Dalam Worksheet terlampir (saya revisi hanya untuk th 2009), beliau memperbandingkan hasil perhitungan UDF dengan Formula. UDF nya adalah sebagai berikut: Option Explicit Function fPPh21_2009(PhKP As Currency) As Currency Dim LapisPh() As Currency Dim Tarif() As Double 'mbak Siti pakai Single, saya ganti Double Dim n As Integer, Lps, Trf Dim pajak As Currency Lps = Split("|50|250|500", "|") ReDim LapisPh(1 To UBound(Lps)) For n = 1 To UBound(Lps): LapisPh(n) = Round((CLng(Lps(n)) * 10 ^ 6), 0): Next n Trf = Split("/5/15/25/30", "/") ReDim Tarif(1 To UBound(Trf)) For n = 1 To UBound(Trf): Tarif(n) = Round((CDbl(Trf(n)) / 100), 2): Next n 'Sng saya ganti Dbl PhKP = 1000 * Round(PhKP / 1000, 0) Select Case PhKP Case Is <= LapisPh(1) pajak = PhKP * Tarif(1) Case Is <= LapisPh(2) pajak = LapisPh(1) * Tarif(1) _ + (PhKP - LapisPh(1)) * Tarif(2) Case Is <= LapisPh(3) pajak = LapisPh(1) * Tarif(1) _ + (LapisPh(2) - LapisPh(1)) * Tarif(2) _ + (PhKP - LapisPh(2)) * Tarif(3) Case Is > LapisPh(3) pajak = (LapisPh(1)) * Tarif(1) _ + (LapisPh(2) - LapisPh(1)) * Tarif(2) _ + (LapisPh(3) - LapisPh(2)) * Tarif(3) _ + (PhKP - LapisPh(3)) * Tarif(4) End Select fPPh21_2009 = Round(pajak) End Function Formula pada baris 12 dan 13 adalah sbb: =IF(C12<=0,0,IF(C12<=50000000,5%*C12,IF(C12<=250000000,50000000*5%+(C12-50000000)*15%,IF(C12<=500000000,50000000*5%+200000000*15%+(C12-250000000)*25%,50000000*5%+200000000*15%+250000000*25%+(C12-500000000)*30%)))) =IF(C13<=0,0,IF(C13<=50000000,5%*C13,IF(C13<=250000000,50000000*5%+(C13-50000000)*15%,IF(C13<=500000000,50000000*5%+200000000*15%+(C13-250000000)*25%,50000000*5%+200000000*15%+250000000*25%+(C13-500000000)*30%)))) Hasilnya seharusnya sama tapi berbeda beberapa ratus rupiah hanya pada kedua baris ini. Pertanyaan saya (bukan ngetes): Apa yang menyebabkan terjadinya perbedaan tsb ? Untuk lebih jelasnya saya lampirkan workbooknya. Terima kasih. Salam, HK <UDF_fPPh21 (Rev by HK - Single to Double).xls>

