VARIASI-KOMBINASI ADD-IN TERBILANG (2) – Belajar Microsoft Excel : Tips, Tricks & Tutorial

VARIASI-KOMBINASI ADD-IN TERBILANG (2)

kode macro fungsi terbilang untuk excel bole dibilang sangat banyak berhamburan di dunia maya … namun ntah kenapa saya selalu tertantang untuk terus meyingkat kode yang pernah saya bikin

berikot evolusi dari kode macro untuk fungsi terbilang yang saya bikin

Versi Pertama

versi ini saya post pada atikel ADD-INS RUPIAH , versi ini masih cukup panjang … ada sekitar 70 baris

function arguments-nya =RP(angka;satuan) untuk lebih jelasnya silahkan baca ADD-INS RUPIAH , dan TIPS ADD-INS RUPIAH

Option ExplicitDim DIKONVERT, TEMPRP, LEVEL, RUPE, MAXDIGIT As String 

Dim i, ANGKA1, ANGKA2, ANGKA3 As Integer

Dim RIBUAN As Boolean

12 

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

Public Function RP(x As Double, y As String) As StringMAXDIGIT = Right(“000000000000000” & Abs(Round(x, 0)), 15) 

RP = “”

For i = 0 To 4

Select Case i

Case Is = 0

LEVEL = “Triliun ”

DIKONVERT = Left(MAXDIGIT, 3)

Case Is = 1

LEVEL = “Miliar ”

DIKONVERT = Mid(MAXDIGIT, 4, 3)

Case Is = 2

LEVEL = “Juta ”

DIKONVERT = Mid(MAXDIGIT, 7, 3)

Case Is = 3

LEVEL = “Ribu ”

DIKONVERT = Mid(MAXDIGIT, 10, 3)

Case Is = 4

LEVEL = “”

DIKONVERT = Right(MAXDIGIT, 3)

End Select

Dim ANGKA(9)

ANGKA(1) = “Se”

ANGKA(2) = “Dua”

ANGKA(3) = “Tiga”

ANGKA(4) = “Empat”

ANGKA(5) = “Lima”

ANGKA(6) = “Enam”

ANGKA(7) = “Tujuh”

ANGKA(8) = “Delapan”

ANGKA(9) = “Sembilan”

TEMPRP = “”

ANGKA1 = Left(DIKONVERT, 1)

ANGKA2 = Mid(DIKONVERT, 2, 1)

ANGKA3 = Right(DIKONVERT, 1)

If ANGKA1 > 0 Then TEMPRP = ANGKA(ANGKA1) & “ratus ”

If ANGKA2 = 1 Then

If ANGKA3 <> 0 Then

TEMPRP = TEMPRP & ANGKA(ANGKA3) & “belas ”

Else

TEMPRP = TEMPRP & ANGKA(ANGKA3) & “Sepuluh ”

End If

GoTo KASIHLEVEL

End If

If ANGKA2 > 0 Then TEMPRP = TEMPRP & ANGKA(ANGKA2) & “puluh ”

If ANGKA3 = 1 Then

TEMPRP = TEMPRP & “Satu ”

Else

TEMPRP = TEMPRP & ANGKA(ANGKA3)

End If

If Right(TEMPRP, 1) <> ” ” Then TEMPRP = TEMPRP & ” ”

KASIHLEVEL:

If TEMPRP <> ” ” Then TEMPRP = TEMPRP & LEVEL

If TEMPRP = “Satu Ribu ” Then TEMPRP = “Seribu ”

If TEMPRP <> ” ” Then RP = RP & TEMPRP

Next i

If x >= 0 And x < 1 Then

If Round(x, 0) = 0 Then RP = “Nol ”

End If

If y = “0” Then

RP = RP & “Rupiah”

Else

RP = RP & y

End If

If x < 0 Then RP = “Minus ” & RP

End Function

function arguments =RP(angka;”satuan”)

Versi Kedua

jumlah baris kode dalam versi ini menyusut cukup signifikan 🙂 menjadi 23 baris tapi satuan tidak saya sertakan dalam fungsi lagi untuk jelasnya bisa anda baca ADD-INS TERBILANG 23 BARIS, function argument-nya =TERBILANG(angka)

berikut adalah kodenya

1 Public Function terb23(x As Double) As String
2 ANGKA = Array(“”, “Se”, “Dua”, “Tiga”, “Empat”, “Lima”, “Enam”, “Tujuh”, “Delapan”, “Sembilan”, “Sepuluh”)
3 LEVEL = Array(“Triliun “, “Miliar “, “Juta “, “Ribu “, “”)
4 MAXDIGIT = Right(“000000000000000” & Abs(Round(x, 0)), 15)
5 For i = 0 To 4
6 TEMPRP = “”
7 If Mid(MAXDIGIT, 1 + (3 * i), 1) > 0 Then TEMPRP = ANGKA(Mid(MAXDIGIT, 1 + (3 * i), 1)) & “ratus “
8 If Mid(MAXDIGIT, 2 + (3 * i), 2) < 11 Then
9 TEMPRP = TEMPRP & ANGKA(Mid(MAXDIGIT, 2 + (3 * i), 2))
10 ElseIf Mid(MAXDIGIT, 2 + (3 * i), 2) < 20 Then
11 TEMPRP = TEMPRP & ANGKA(Mid(MAXDIGIT, 3 + (3 * i), 1)) & “belas “
12 Else
13 TEMPRP = TEMPRP & ANGKA(Mid(MAXDIGIT, 2 + (3 * i), 1)) & “puluh ” & ANGKA(Mid(MAXDIGIT, 3 + (3 * i), 1))
14 End If
15 If Right(TEMPRP, 1) ” ” Then TEMPRP = TEMPRP & ” “
16 BERILEVEL:
17 If TEMPRP ” ” Then TEMPRP = TEMPRP & LEVEL(i)
18 If TEMPRP = “Se Ribu ” Then TEMPRP = “Seribu “
19 If TEMPRP ” ” Then terb23 = Application.WorksheetFunction.Substitute(terb23 & TEMPRP, “Se “, “Satu “)
20 Next i
21 If Abs(Round(x, 0)) = 0 Then terb23 = “Nol “
22 If x < 0 Then terb23 = “Minus ” & terb23
23 End Function

Versi Ketiga

untuk versi ini jumlah baris kodenya ada 20 baris tidak saya post secara khusus tapi saya sertakan dalam artikel yang membahas tentang Variasi Kombinasi Fungsi2 Excel yang berhubungan dengan fungsi terbilang yang saya buat. function argument-nya =TERB20(angka)

ini artikelnya VARIASI-KOMBINASI ADD-IN TERBILANG dan berikut ini kodenya :

1 Public Function terb20(x As Double) As String
2 ANGKA = Array(“”, “Se”, “Dua”, “Tiga”, “Empat”, “Lima”, “Enam”, “Tujuh”, “Delapan”, “Sembilan”, “Sepuluh”, “Sebelas”, “Duabelas”, “Tigabelas”, “Empatbelas”, “Limabelas”, “Enambelas”, “Tujuhbelas”, “Delapanbelas”, “Sembilanbelas”)
3 LEVEL = Array(“Triliun “, “Miliar “, “Juta “, “Ribu “, “”)
4 For i = 0 To 4
5 TEMPRP = “”
6 If Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 1 + (3 * i), 1) > 0 Then TEMPRP = ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 1 + (3 * i), 1)) & “ratus “
7 If Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 2) < 20 Then
8 TEMPRP = TEMPRP & ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 2))
9 Else
10 TEMPRP = TEMPRP & ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 1)) & “puluh ” & ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 3 + (3 * i), 1))
11 End If
12 If Right(TEMPRP, 1) ” ” Then TEMPRP = TEMPRP & ” “
13 BERILEVEL:
14 If TEMPRP ” ” Then TEMPRP = TEMPRP & LEVEL(i)
15 If TEMPRP = “Se Ribu ” Then TEMPRP = “Seribu “
16 If TEMPRP ” ” Then terb20 = Application.WorksheetFunction.Substitute(terb20 & TEMPRP, “Se “, “Satu “)
17 Next i
18 If Abs(Round(x, 0)) = 0 Then terb20 = “Nol “
19 If x < 0 Then terb20 = “Minus ” & terb20
20 End Function

Versi Keempat

versi ini hanya 16 baris kode macro, function argument-nya =TERB16(angka) … ini kodenya :

1 Public Function terb16(x As Double) As String
2 ANGKA = Array(“”, “Se”, “Dua”, “Tiga”, “Empat”, “Lima”, “Enam”, “Tujuh”, “Delapan”, “Sembilan”, “Sepuluh”, “Sebelas”, “Duabelas”, “Tigabelas”, “Empatbelas”, “Limabelas”, “Enambelas”, “Tujuhbelas”, “Delapanbelas”, “Sembilanbelas”)
3 LEVEL = Array(” Triliun “, ” Miliar “, ” Juta “, ” Ribu “, ” “)
4 For i = 0 To 4
5 TEMPRP = “”
6 If Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 1 + (3 * i), 1) > 0 Then TEMPRP = ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 1 + (3 * i), 1)) & “ratus “
7 If Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 2) < 20 Then TEMPRP = TEMPRP & ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 2))
8 If Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 2) >= 20 Then TEMPRP = TEMPRP & ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 2 + (3 * i), 1)) & “puluh ” & ANGKA(Mid(Right(“000000000000000” & Abs(Round(x, 0)), 15), 3 + (3 * i), 1))
9 BERILEVEL:
10 If TEMPRP Empty Then TEMPRP = TEMPRP & LEVEL(i)
11 If TEMPRP = “Se Ribu ” Then TEMPRP = “Seribu “
12 terb16 = Application.WorksheetFunction.Substitute(terb16 & TEMPRP, “Se “, “Satu “)
13 Next i
14 If Abs(Round(x, 0)) = 0 Then terb16 = “Nol “
15 If x < 0 Then terb16 = “Minus ” & terb16
16 End Function

kode2 diatas telah saya gabung dalam 1 file yaitu terbilangpack.xls isinya kode2:

  1. fungsi rupiah , 66 baris , dengan satuan (Versi Pertama)
  2. fungsi terbilang, 23 baris (Versi Kedua)
  3. fungsi terb20,20 baris (Versi Ketiga)
  4. fungsi terb16,16 baris ( Versi Keempat)

ditambah :

1. fungsi AKK (Angka Ke Kata), untuk menerjemahkan angka2  ke kata secara langsung tidak dalam format terbilang. function argument-nya =AKK(teks yang mengandung angka) contoh :

=AKK(123) akan menghasilkan Satu Dua Tiga

=AKK(“A1B2C3”) akan menghasilkan Satu Dua Tiga

2. fungsi VARTERB (Variasi Terbilang), Hampir semua variasi penggunaan fungsi terbilangdapat ditangani fungsi ini. function argument-nya =VARTERB(angka;“satuan depan”;“satuan belakang”;“kata penghubung”;digit angka setalah koma;mode variasi(1-3))

angka dari -999.999.999.999.999 sd 999.999.999.999.999

“satuan depan” satuan yang akan ditambahkan pada terbilang angka di depan koma

“satuan belakang” satuan yang akan ditambahkan pada terbilang angka di belakang koma

“kata penghubung” kata yang akan menenjemahkan tanda koma (,)

digit angka setalah koma banyaknya angka setelah koma yang akandigunakan dalam pembulatan

mode variasi yang akan digunakan untuk menerjemahkan angka dibelakan koma, ada tiga opsi :

1    angka setelah koma akan diterjemahkan dengan format terbilang, misal “,123” akan menjadi “seratus duapuluh tiga”

2    angka setelah koma akan diterjemahkan secara langsung, misal “ ,123 ” akan menjadi ” satu dua tiga”

3    angka setelah koma akan diubah menjadi angka pecahan dengan format xx/xxx, misal “,123” akan menjadi “123/1000”

anda bisa download terbilangpack.xls di halaman download. atau dari widget download box

link2 artikel yang ada diatas sebaiknya juga anda baca

=====================================================

PERHATIAN :

KODE-KODE  DIATAS KALAU ANDA COPY-PASTE KE MODULE VBA KEMUNGKINAN AKAN ERROR KARENA ADA KESALAHAN PADA PENULISAHAN TANDA PETIK (“) , KEMUNGKINAN KARENA SAYA TIDAK MENGGUNAKAN SYNTAX HIGHLIGHTER PADA PENULISAN KODE2 DIATAS … ADA YANG TAHU CARA MENGGUNAKAN SYNTAX HIGHLIGHTER PADA  WORDPRESS.COM ???

=====================================================

MDLMDL(…Monggo Dipun Leresaken Menawi Dalem Lepat…)

=====================================================

PERHATIAN LAGI :

FUNGSI “VARTERB” TERNYATA BELOM SEMPURNA … BACA UPDATENYA DISINI

=====================================================

bingung cara downloadnya ??

Baca aja halaman download dengan klik icon di samping

feed , email and my social media

angka;“satuan depan”;“satuan belakang”;“kata penghubung”;digit angka setalah koma;mode variasi
8 Comments

Jika sOdara menemukan sesuatu yang bermanpaat di marih .... silahkan kasih komennya