dear Mr kid, Bagus, dan guru baru saya Miss Jan Raisin
solusi formula yang di berikan Miss Jan sangatlah bagus. Namun ada sedikit 
kendala ketika saya melakukan misstype.
contoh ketika saya tidak sengaja mengetik 2 kali tanda "spasi" maka formula yg 
diberikan Miss Jan menambahkan 20 untuk harga 1 spasi yg bertambah.
ex: 12.22.70.8.115#20 11.23.101.65.9#20 1300#100 = 300
      12.22.70.8.115#20 (tak sengaja tambah 1 spasi) 11.23.101.65.9#20 (tak 
sengaja 1 spasi)1300#100
maka total setelah mistype 2x spasi yg bertambah = 340

kiranya Bapak/Ibu excel-lent semua dapat membantu.
mohon bimbingan dan kesabarannya Ibu/Bapak yah..
(angkat saya jadi muridmu)



Pada Kamis, 6 Februari 2014 15:02, Jan Raisin <[email protected]> 
menulis:

 
hai pak Pardede,

coba bantu dengan UDF (User Defined Function)

scriptnya ditulis dalam sebuah modul dengan scope Public agar dapat dipanggil 
dari worksheet seperti fungsi Excel lainnya

Option Explicit

' =============================================== '
'  UDF SumIfSC = Summary With Special Conditions  '
'  Untuk milis belajar-excel                      '
'  Miss Jan Raisin                                '
'  Di bawah langit yang sama , 06-Feb-2014        '
' =============================================== '

Public Function SUMIFSC(sData As String, sDel As String, sDelPart As String, 
sDelVal As String) As Double
    Dim sFull As String, sPart As String
    Dim iDel As Integer, iPart As Integer
    Dim i As Integer, j As Integer, k As Integer
    Dim dbVal As Double, dbSum As Double
    
    iDel = Len(sData) - Len(Application.WorksheetFunction.Substitute(sData, 
sDel, ""))
    sFull = sData
    For i = 1 To iDel + 1
        For j = 1 To Len(sFull)
            If Mid(sFull, j, 1) <> sDel Then
                sPart = sPart & Mid(sFull, j, 1)
            Else
                sFull = Mid(sFull, j + 1, Len(sFull) - j)
                Exit For
            End If
        Next j
        iPart = Len(sPart) - 
Len(Application.WorksheetFunction.Substitute(sPart, sDelPart, "")) + 1
        For k = 1 To Len(sPart)
            If Mid(sPart, k, 1) = sDelVal Then
                dbVal = CDbl(Mid(sPart, k + 1, Len(sPart) - k))
                Exit For
            End If
        Next k
        dbSum = dbSum + (iPart * dbVal)
        sPart = vbNullString
    Next i
    SUMIFSC = dbSum
End Function

syntaxnya:

=SumIfSC( data ,delimiter , delimiter_dalam_setiap_bagian , delimiter_nilai )

untuk setiap delimiter harus ditulis di antara tanda kutip dua

contoh penggunaan dengan data di cel A1
delimiter adalah spasi, ditulis " "
delimiter di dalam setiap bagian adalah titik, ditulis "."
delimiter untuk nilai adalah tanda pagar, ditulis "#"

formula lengkapnya menjadi
=SumIfSC(  A1 ," " , "." , "#" )

jika regional setting komputer setempat adalah Indonesian maka ubah seluruh 
tanda koma yang berwarna merah menjadi titik koma
file terlampir, pastikan macro diizinkan bekerja di komputer anda

Salam,


-Miss Jan Raisin-


Pada 6 Februari 2014 13.32, Pukka Hamonangan Pardede <[email protected]> 
menulis:


> 
>Dear Bagus dan Mr. Kid
>rumus yg terakhir sebenarnya bekerja tapi nampaknya hanya kepada contoh: 
>12.22.70.8.115#20 11.23.101.65.9#20 1300#100 (hanya 3 tanda #)
>jadi mohon bantuannya sekali lg pak, karena data yg di entri biasanya berubah 
>( kadang hanya 1 tanda # dan kadang sampai 30 tanda #. artinya formula yg kita 
>inginkan akan bekerja pada unlimited tanda #.
>
>
>nb: "panjang/pendeknya formula yg dihasilkan tidak menjadi masalah pak"
>
>
>mohon bimbingan dan kesabarannya ya pak..
>(angkat saya jadi muridmu)
>
>
>
>
>

Kirim email ke