Xin code VBA xử lý công thức có điều kiện

Liên hệ QC

huytc91

Thành viên mới
Tham gia
28/10/15
Bài viết
19
Được thích
1
Nghề nghiệp
IT helpdesk
Em chào anh/chị!

Đề bài: Em muốn kiểm tra nếu ô trong cột xác nhận được tích "v" mà cột date có tháng lớn hơn tháng hiện tại thì ô trong cột ghi chú sẽ có câu ( sao tích "v" sớm thế). Nếu không có thông tin gì ở hàng mà tích v thì sẽ có ghi chú (Có thông tin gì đâu mà tích v)
chi tiết trong file đính kèm.

Em xin cảm ơn trước ạ.
 

File đính kèm

  • q_vpa.xlsx
    10.1 KB · Đọc: 6
Code làm gì cho phức tạp khi chỉ đơn giản là if.
 

File đính kèm

  • q_vpa.xlsx
    10.5 KB · Đọc: 4
Upvote 0
Em muốn dùng vpa chứ không muốn dùng công thức ạ. Công thức thì em đã không muốn làm phiền anh ạ.
Chém đại, test thử đi bạn:
PHP:
Sub Tick()
Dim nMth As Long, sMth As Long, i As Long, Lr As Long, sArr()
Lr = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
sArr = Sheets("Sheet1").Range("A2:D" & Lr).Value
If Lr = 1 Then MsgBox "Chua co du lieu": Exit Sub
For i = 1 To UBound(sArr)
    If sArr(i, 3) <> "" Then
        nMth = Month(Date)
        sMth = Month(sArr(i, 2))
            If nMth < sMth Then sArr(i, 4) = "Sao tick som the"
            If sArr(i, 2) = "" Then sArr(i, 4) = "Tick tao lao"
    End If
Next i
Sheets("Sheet1").Range("A2:D" & Lr).Value = sArr
End Sub
 
Upvote 0
Em chào anh/chị!

Đề bài: Em muốn kiểm tra nếu ô trong cột xác nhận được tích "v" mà cột date có tháng lớn hơn tháng hiện tại thì ô trong cột ghi chú sẽ có câu ( sao tích "v" sớm thế). Nếu không có thông tin gì ở hàng mà tích v thì sẽ có ghi chú (Có thông tin gì đâu mà tích v)
chi tiết trong file đính kèm.

Em xin cảm ơn trước ạ.
Bạn thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
        If Target.Offset(, -1) = Empty And Target = "v" Then
            Target.Offset(, 1) = "Có gì " & ChrW(273) & "âu mà tích."
        Else
            Target.Offset(, 1) = Empty
        End If
        If IsDate(Target.Offset(, -1)) Then
            If Target.Offset(, -1) <= Now() And Target = "v" Then
                Target.Offset(, 1) = "Có gì " & ChrW(273) & "âu mà tích."
            ElseIf Target = Empty Then
                Target.Offset(, 1) = Empty
            End If
            If Target.Offset(, -1) > Now() And Target = "v" Then
                Target.Offset(, 1) = "Sao tích s" & ChrW(7899) & "m th" & ChrW(7871) & _
                                     "."
            ElseIf Target = Empty Then
                Target.Offset(, 1) = Empty
            End If
        End If
    End If
End Sub
 
Upvote 0
Bạn thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
        If Target.Offset(, -1) = Empty And Target = "v" Then
            Target.Offset(, 1) = "Có gì " & ChrW(273) & "âu mà tích."
        Else
            Target.Offset(, 1) = Empty
        End If
        If IsDate(Target.Offset(, -1)) Then
            If Target.Offset(, -1) <= Now() And Target = "v" Then
                Target.Offset(, 1) = "Có gì " & ChrW(273) & "âu mà tích."
            ElseIf Target = Empty Then
                Target.Offset(, 1) = Empty
            End If
            If Target.Offset(, -1) > Now() And Target = "v" Then
                Target.Offset(, 1) = "Sao tích s" & ChrW(7899) & "m th" & ChrW(7871) & _
                                     "."
            ElseIf Target = Empty Then
                Target.Offset(, 1) = Empty
            End If
        End If
    End If
End Sub
Tuyệt vời ạ. Em cảm ơn nhé
Bài đã được tự động gộp:

Chém đại, test thử đi bạn:
PHP:
Sub Tick()
Dim nMth As Long, sMth As Long, i As Long, Lr As Long, sArr()
Lr = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
sArr = Sheets("Sheet1").Range("A2:D" & Lr).Value
If Lr = 1 Then MsgBox "Chua co du lieu": Exit Sub
For i = 1 To UBound(sArr)
    If sArr(i, 3) <> "" Then
        nMth = Month(Date)
        sMth = Month(sArr(i, 2))
            If nMth < sMth Then sArr(i, 4) = "Sao tick som the"
            If sArr(i, 2) = "" Then sArr(i, 4) = "Tick tao lao"
    End If
Next i
Sheets("Sheet1").Range("A2:D" & Lr).Value = sArr
End Sub
Em thử thì không chạy đk thứ 2 nếu không đánh số TT ở cột A ạ
Bài đã được tự động gộp:

Bạn thử:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
        If Target.Offset(, -1) = Empty And Target = "v" Then
            Target.Offset(, 1) = "Có gì " & ChrW(273) & "âu mà tích."
        Else
            Target.Offset(, 1) = Empty
        End If
        If IsDate(Target.Offset(, -1)) Then
            If Target.Offset(, -1) <= Now() And Target = "v" Then
                Target.Offset(, 1) = "Có gì " & ChrW(273) & "âu mà tích."
            ElseIf Target = Empty Then
                Target.Offset(, 1) = Empty
            End If
            If Target.Offset(, -1) > Now() And Target = "v" Then
                Target.Offset(, 1) = "Sao tích s" & ChrW(7899) & "m th" & ChrW(7871) & _
                                     "."
            ElseIf Target = Empty Then
                Target.Offset(, 1) = Empty
            End If
        End If
    End If
End Sub
Đúng như ý em. code chạy mượt nữa. em cảm ơn nhé.
 
Upvote 0
Em thử thì không chạy đk thứ 2 nếu không đánh số TT ở cột A ạ
À quên :D , code thì cứ theo bác @phulien1902 nhưng cứ thử cái này xem nhé
PHP:
Sub Tick()
Dim nMth As Long, sMth As Long, i As Long, Lr As Long, sArr()
Lr = Sheets("Sheet1").Range("B" & Rows.Count).End(xlUp).Row
sArr = Sheets("Sheet1").Range("A2:D" & Lr).Value
If Lr = 1 Then MsgBox "Chua co du lieu": Exit Sub
For i = 1 To UBound(sArr)
    If sArr(i, 3) <> "" Then
        nMth = Month(Date)
        sMth = Month(sArr(i, 2))
            If nMth < sMth Then sArr(i, 4) = "Sao tick som the"
            If sArr(i, 2) = "" Then sArr(i, 4) = "Tick tao lao"
    End If
Next i
Sheets("Sheet1").Range("A2:D" & Lr).Value = sArr
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom