UDF Deskripsi Penilaian

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 kata
  • Range_Nilai isi dengan alamat Range Nilai Siswa
  • Range_header isi dengan alamat Range Keterangan
  • Kata isi dengan kata awal penilaian
  • Min isi dengan Nilai Minimum Penilaian
  • Max isi dengan Nilai Maximum Penilaian
  • Jika penilaian lebih dari 1, Kata-min-max bisa diisi kembali sebanyak yang diperlukan

Untuk membuat UDF langkah-langkahnya adalah:

  • tekan Alt + F11 untuk membuka Jendela Visual Basic Editor
  • Pada Menu Bar, Pilih Insert – Module
  • Pastekan Script dibawah ini ke dalam module
'-----------------------------------------
' 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)

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp