Penilaian di sekolah tidak hanya sekadar angka, di balik setiap nilai terdapat cerita tentang pemahaman, usaha, dan kemajuan siswa.
Namun, sering kali angka saja tidak cukup untuk menjelaskan bagaimana pencapaian seorang siswa secara lebih mendalam. Di sinilah deskripsi nilai berperan penting, memberikan gambaran yang lebih lengkap tentang kemampuan dan perkembangan siswa.
Bayangkan jika deskripsi ini bisa dihasilkan secara otomatis sesuai dengan kriteria yang sudah ditentukan. Itulah salah satu kelebihan dari User-Defined Function (UDF).
Dengan UDF, kamu bisa mengubah nilai angka menjadi kalimat deskriptif secara otomatis dengan mudah.
Dalam artikel ini, saya ingin membagikan UDF untuk mendeskripsikan nilai siswa, sehingga penilaian menjadi lebih mudah.
Dibawah ini contoh menggunakan UDF deskripsi nilai untuk mengisi Dekripsi nilai dengan mudah
Sintaksis dari rumus DescNilai
ini adalah
=DescNilai(Sparator, Range_Nilai, Range_header,[Kata1],[Min1],[Max1],[Kata2],[Min2],[Max3]….)
Sparator
isi dengan karakter penghubung setiap kataRange_Nilai
isi dengan alamat Range Nilai SiswaRange_header
isi dengan alamat Range KeteranganKata
isi dengan kata awal penilaianMin
isi dengan Nilai Minimum PenilaianMax
isi dengan Nilai Maximum PenilaianUntuk membuat UDF langkah-langkahnya adalah:
'----------------------------------------- ' Sctipt VBA : Fungsi DescNilai ' Author : https://vba.co.id ' Situs belajar VBA No.1 ' di Indonesia ' ' =DescNilai(Sparator, Range_Nilai, Range_header,[Kata1],[Min1],[Max1],....) ' =DescNilai(Sparator, Range_Nilai, Range_header,[Kata1],[Min1],[Max1],[Kata2],[Min2],[Max2]....) '----------------------------------------- Function DescNilai(Spr As String, RngNilai As Range, _ RngHeader As Range, _ ParamArray Isi() As Variant) As String Dim PanjangArray As Long Dim Col As New Collection Dim Sel As Range Dim Kata() As String, TmpStr As String PanjangArray = UBound(Isi) + 1 If Not PanjangArray Mod 3 = 0 Then DescNilai = CVErr(xlErrValue) Exit Function End If ReDim Kata((PanjangArray \ 3) - 1) For i = 0 To (PanjangArray \ 3) - 1 TmpStr = "" Set Col = New Collection For j = 1 To RngNilai.Cells.count If RngNilai.Cells(j).Value >= Isi((i * 3) + 1) And _ RngNilai.Cells(j).Value <= Isi((i * 3) + 2) Then Col.Add RngHeader.Cells(j).Value End If Next j Select Case Col.count Case 0 TmpStr = "" Case 1 TmpStr = Isi(i * 3) & " " & Col.Item(1) Case Else For x = 1 To Col.count - 1 TmpStr = TmpStr & "," & Col.Item(x) Next x TmpStr = Mid(TmpStr, 2, Len(TmpStr)) TmpStr = Isi(i * 3) & " " & TmpStr & " dan " & Col.Item(Col.count) End Select Kata(i) = TmpStr Set Col = Nothing Next i TmpStr = "" For i = 0 To UBound(Kata) TmpStr = TmpStr & Spr & Kata(i) Next i TmpStr = Mid(TmpStr, Len(Spr) + 1, Len(TmpStr)) DescNilai = TmpStr End Function
Jika sudah, Jendela Visual Basic Editor bisa dan rumus DescNilai
sudah bisa digunakan di Excel.
Pengisian rumus DescNilai tidak hanya bisa 3 nilai saja tapi bisa beberapa bahkan satu atau dua penilaian. Seperti contohnya dibawah ini.
Pengisian Hanya Satu nilai
="Ananda " & B7 &" "&DescNilai(";",C7:I7,$C$2:$I$2,"Sangat menguasai",90,100)
Pengisian dengan dua jenis penilaian
="Ananda " & B6 &" "&DescNilai(";",C6:I6,$C$2:$I$2,"Sangat menguasai",90,100,"Telah memahami",80,89)
Selain itu, penghubung sparator tiap penilaian juga bisa diubah misalnya diubah dengan “-“, maka rumusnya bisa ditulis.
="Ananda " & B8 &" "&DescNilai("-",C8:I8,$C$2:$I$2,"Sangat menguasai",90,100,"Telah memahami",80,89,"Namun Perlu Peningkatan lagi",50,65)