Jumat, 30 April 2010

Set Error Formula Result To Zero Value

Untuk mengubah nilai error (#N/A, #DIV/0!, dll) pada suatu formula menjadi 0 (nol) , biasa kita menambahkan fungsi IF pada formula.
Contoh :
Diketahui : A1=10, B1=0
Formula : =A1/B1
Result : #DIV/0!

Untuk mengubah nilai error menjadi 0, maka Formulanya kita ubah menjadi :
=IF(B1=0,0,A1/B1)
Maka hasilnya adalah 0

Bayangkan jika formula anda cukup panjang, maka dengan ditambahkannya fungsi IF seperti pada contoh, panjang formula anda akan menjadi 2 kali lipat, dan ini tentunya akan mempersulit anda dalam pengecekan formula jika ada kesalahan.

Contoh Formula :
=IF(A49="",0,SUM(B60:C60)/VLOOKUP(Setting!$C$3,Setting!$B$25:$C$26,2,FALSE)*VLOOKUP($B$3,Setting!$B$6:$L$8,COLUMN()-3,FALSE))

Jika menggunakan IF akan menjadi :
=IF(VLOOKUP(Setting!$C$3,Setting!$B$25:$C$26,2,FALSE)*VLOOKUP($B$3,Setting!$B$6:$L$8,COLUMN()-3,FALSE))=0,0,IF(A49="",0,SUM(B60:C60)/VLOOKUP(Setting!$C$3,Setting!$B$25:$C$26,2,FALSE)*VLOOKUP($B$3,Setting!$B$6:$L$8,COLUMN()-3,FALSE)))

Bagaimana cara untuk mempermudah ?

Cara untuk mempermudah adalah dengan memanfaatkan macro

Buat satu module , kemudian isi dengan code berikut :

Function SetToZero(vString As Variant) As Double
On Error Resume Next

If IsEmpty(vString) Or Len(vString) = 0 Then
SetToZero = 0
GoTo akhir:
Else
SetToZero = vString
GoTo akhir:
End If

If vString = CVErr(xlErrDiv0) Or _
vString = CVErr(xlErrNA) Or _
vString = CVErr(xlErrName) Or _
vString = CVErr(xlErrNull) Or _
vString = CVErr(xlErrNum) Or _
vString = CVErr(xlErrRef) Or _
vString = CVErr(xlErrValue) Then
SetToZero = 0
GoTo akhir:
Else
SetToZero = vString
GoTo akhir:
End If
akhir:
End Function


Kemudian ubah formula anda menjadi :
=SetToZero(A1/B1)

Kemudian rasakan hasilnya....