Tanya Merubah warna angka dan Rumus IF 3 Kondisi jika datanya berupa DDMMMYY

  1. 7 tahun lalu

    Master Mohon bantuannya

    1. bagaimana caranya merubah warna angka dalam 1 kolum jika terdiri dari angka dan Huruf, Contoh ASHD123J00HJG76
    Angkanya dirubah menjadi warna merah

    2. Bagaimana formulanya jika saya ingin menggunakan fungsi IF, tetapi datanya berbentuk DD-MMM-YY,
    Untuk lebih jelasnya lg bisa lihat dilampiran

    Terimaksih

  2. Di sunting 7 tahun lalu oleh Fujiansyah92

    semoga ini sedikit membantu ya

    file terlampir

    note: jangan lupa untuk mengaktifkan macronya jika belum (google it)

    saya menggunakan coding berikut untuk mewarnai font nya karna sulit/ mungkin tdk bisa mewarnai font secara partial/tdk keseluruhan cell. Dan untuk string/trigger nya,saya menggunakan kata "kode produksi" .silahkan menyesuaikan sesuai keinginan sendiri ya.

    mungkin yg lain ada yg bisa hanya menggunakan conditional formatting

    berikut codenya :

    Sub MfontColoring()
    
    On Error GoTo Errh:
    Dim MyColor
    MyColor = InputBox("Tentukan warna : Merah,Kuning,Hijau,Biru", "Warna", "Merah")
    If MyColor = "Merah" Or MyColor = "merah" Or MyColor = "MERAH" Then MyColor = -16776961
    If MyColor = "Kuning" Or MyColor = "kuning" Or MyColor = "KUNING" Then MyColor = -16711681
    If MyColor = "Hijau" Or MyColor = "hijau" Or MyColor = "HIJAU" Or MyColor = "Ijo" Or MyColor = "Ijo" Or MyColor = "IJO" Then MyColor = -16711936
    If MyColor = "Biru" Or MyColor = "biru" Or MyColor = "BIRU" Then MyColor = -1003520
    If MyColor = "" Then MyColor = "-16776961"
    
    Range("A1").Select ' dimulai dari Range A1
    Cells.Find(What:="kode produksi", LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext).Activate 'untuk membuat trigger starting location
    Do Until ActiveCell.Value = "" 'akan loop /continously sampai cell yg kosong
    ActiveCell.Offset(1, 0).Select 'memulai cell kebawahnya
    ActiveCell.Font.ColorIndex = xlAutomatic 'reset font color
       Dim i
       For i = 1 To Len(Range("A5").Value) ' i di set sbg karakter & len sbg jumlah  pengulangan perintah untuk mewarnai karakter
       
        Mychar = ActiveCell.Characters(Start:=i, Length:=1).Text 'mengidentifikasikan karakter yg saat ini terbaca
        If Mychar = "0" Or Mychar = "1" Or Mychar = "2" Or Mychar = "3" Or Mychar = "4" Or Mychar = "5" _
        Or Mychar = "6" Or Mychar = "7" Or Mychar = "8" Or Mychar = "9" Then 'mengidentifikasikan karakter yg mengandung format number/numeric
        ActiveCell.Characters(Start:=i, Length:=1).Font.Color = MyColor 'merubah warna menjadi warna yg ditentukan di awal/inputbox
        End If
        
       Next i 'lanjut ke karakter selanjutnya
    Loop 'lanjut ke cell selanjutnya
       
    Range("A1").Select  'kembali ke cell A1
    
    MsgBox "Font color was successfully applied", vbInformation
    Exit Sub
       
    Errh:
    
    MsgBox "The color is not registered", vbCritical
    Call MfontReset 'jika error,akan mereset kembali warna font menjadi warna otomatis/hitam
    End Sub
    
    
    Sub MfontReset()
    
        Range("A1").Select ' dimulai dari Range A1
        Cells.Find(What:="kode produksi", LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext).Activate 'untuk membuat trigger starting location
        Range(Selection, Selection.End(xlDown)).Select ' memulai seleksi cell kebawah
        Selection.Font.ColorIndex = xlAutomatic 'merubah warna menjadi otomatis
        Range("A1").Select 'kembali ke cell A1
        
        MsgBox "Font Color was successfully reset", vbInformation
       
    End Sub
    
    

    Contoh Kasus.xlsm

  3. diditsatriyadi

    19 Apr 2017 Terverifikasi Surabaya + 1.104 Poin

    benar seperti yg dijelaskan mas @Fujiansyah92 mewarnai font dalam 1sel dengan warna berbeda2 harus menggunakan macro, sehingga filenya bukan xlsx lagi tapi xlsm
    kalo mas fuji pake trigger menekan tombol, maka saya coba alternatif lain makro yang ditrigger saat sel diisi, sebagai berikut

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A5:A9")) Is Nothing Then
        tulis = Target.Value
        For ii = 1 To Len(tulis)
            If IsNumeric(Mid$(tulis, ii, 1)) = True Then Target.Characters(ii, 1).Font.Color = vbRed
        Next ii
    End If
    End Sub


    makro ini mendeteksi range sel yang berubah, pada baris 2 saya cuma batasi pada range A5:A9 yang bisa diganti sesuai keinginan, lalu memeriksa karakter yang merupakan angka dengan IsNumeric, jika sesuai akan diwarnai merah vbRed
    untuk yg no.2 idem dengan mas fuji menggunakan IF bertingkat dengan menghitung selisih tanggal lalu dibandingkan dengan 3 x 3 bulan = 90, dan seterusnya

  4. Terimakasih Mas @Fujiansyah92
    Formula IF nya sudah bisa, tapi masih ada yg mau saya tanyakan, jika Kolum EXPIRED DATE nya Kosong, kenapa Kolum keterangannya selalu terisi B2, bagaimana supaya Jika Kolum EXPIRED DATE nya kosong maka keterangannya juga kosong?

    Terimakasih juga mas @diditsatriyadi
    Mas tadi saya coba copy paste macronya dgn cara tkn ALT+F11

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A5:A9")) Is Nothing Then
    tulis = Target.Value
    For ii = 1 To Len(tulis)
    If IsNumeric(Mid$(tulis, ii, 1)) = True Then Target.Characters(ii, 1).Font.Color = vbRed
    Next ii
    End If
    End Sub

    Saya ganti (Target, Range("A5:A9") sesuai dgn data asli saya, tapi kenapa gak berhasil keluar notif error,
    apakah ada kesalahan dalam cara saya copy paste kode macro nya?

  5. @ahmad.suganto Terimakasih Mas @Fujiansyah92
    Formula IF nya sudah bisa, tapi masih ada yg mau saya tanyakan, jika Kolum EXPIRED DATE nya Kosong, kenapa Kolum keterangannya selalu terisi B2, bagaimana supaya Jika Kolum EXPIRED DATE nya kosong maka keterangannya juga kosong?

    Coba file terlampir

  6. Di sunting 7 tahun lalu oleh ahmad.suganto

    Terimakasih mas @Fujiansyah92 udah sukses formulanya :D

    Oh iya mas, sekalian mau tanya yg macro ini

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A5:A9")) Is Nothing Then
        tulis = Target.Value
        For ii = 1 To Len(tulis)
            If IsNumeric(Mid$(tulis, ii, 1)) = True Then Target.Characters(ii, 1).Font.Color = vbRed
        Next ii
    End If
    End Sub

    Kenapa waktu aku copi paste ke file excel yg lain dan yg aku ganti ("A5:A9") menjadi ("V16:V48") keluar tulisan
    Run-time error '1004':
    Application or object-defined error

    Mohon bantuannya mas

  7. Wah saya ga tau klo itu kan macro nya mas didit...tapi saya bisa kok mengaplikasikannya .Coba deh file terlampir .

    Semoga sedikit membantu ....

 

atau Mendaftar untuk ikut berdiskusi!