Xin code VBA xử lý công thức có điều kiện (1 người xem)

  • Thread starter Thread starter huytc91
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

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

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