Mã:
Sub NB()
Dim wb As ThisWorkbook
Dim ws As Worksheet
Dim rg1 As Range
Dim d As Date
Dim WS_Count As Integer
Dim b As Range
Dim f As String
On Error Resume Next
Dim LastCol As Integer
Dim i As Variant
Dim j As Variant
Dim Range1 As Range
lcl = Cells(7, Columns.Count).End(xlToLeft).Column
Debug.Print lcl
lr = Cells(Rows.Count, "N").End(xlUp).Row
Debug.Print lr
Cells.Locked = False
Cells.FormulaHidden = False
WS_Count = ActiveWorkbook.Worksheets.Count '
For j = 1 To WS_Count
If Worksheets(i).Visible = True Then
'
For Each rg1 In ActiveWorkbook.Worksheets(j).Range("P7:CK7")
If (rg1.Value = Range("Q7").Value) Or (rg1.Value = Range("S7").Value) Or (rg1.Value = Range("U7").Value) Or (rg1.Value = Range("W7").Value) Then
Debug.Print rg1.Address
For i = 11 To 20
Debug.Print Cells(rg1.Offset(i, 0).Columns.Row, 14).Address
If IsDate((Cells(rg1.Offset(i, 0).Columns.Row, 14))) And True Then
d = CDate(Cells(rg1.Offset(i, 0).Columns.Row, 14).Value)
e = "=DATEDIF(" & Replace(Cells(rg1.Offset(i, 0).Columns.Row, 14).Address, "$", "") & "," & Replace(rg1.Offset(1, 0).Address, "$", "") & ", ""d"")/350"
Cells(rg1.Offset(i, 0).Columns.Row, 16).Value = DateAdd("yyyy", Cells(rg1.Offset(i, 0).Columns.Row, 15).Value, d)
Debug.Print e
rg1.Offset(i, 0).Formula = e
rg1.Offset(i, 0).Copy
rg1.Offset(i, 0).PasteSpecial xlPasteValues
n = rg1.Value
Range1 = Range(Cells(8, 17), Cells(lr, lcl))
Debug.Print Range1.Address
Range1.Copy
Range("Q8").PasteSpecial Paste:=xlPasteValues
Debug.Print rg1.Offset(i, 0).Value
Debug.Print Cells(rg1.Offset(i, 0).Columns.Row, 15).Value
Debug.Print rg1.Offset(i, 0).Address
Debug.Print i
Dim a As Variant
a = Cells(rg1.Offset(i, 0).Columns.Row, 15).Value
Debug.Print a
If ((rg1.Value = Range("Q7").Value Or Range("S7").Value)) Then
Debug.Print rg1.Address
If ((rg1.Offset(i, 0).Value >= 2) And _
(rg1.Offset(i, 0).Offset(0, -1).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -3).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -5).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -7).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -9).Value <> "x")) Then
rg1.Offset(i, 0).Offset(0, 1).Value = "x"
Else
rg1.Offset(i, 0).Offset(0, 1).Value = "-"
' ElseIf ((rg1.Value = Range("S7").Value) And (rg1.Offset(i, 0).Value >= 2.6)) Then
' rg1.Offset(i, 0).Offset(0, 1).Value = "x"
' =====================================================
If ((rg1.Value = Range("U7").Value Or Range("W7").Value)) Then
Debug.Print rg1.Address
If ((n >= a) And _
(rg1.Offset(i, 0).Offset(0, -1).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -5).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -7).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -9).Value <> "x")) Then
rg1.Offset(i, 0).Offset(0, 1).Value = "x"
Else
rg1.Offset(i, 0).Offset(0, 1).Value = "-"
'=================================
If (rg1.Offset(i, 0).Offset(0, 1).Value = "x") Then
cell1 = Cells(rg1.Offset(i, 0).Columns.Row, 16)
cell2 = Cells(rg1.Offset(i, 0).Columns.Row, 1)
Debug.Print Range(Cells(rg1.Offset(i, 0).Columns.Row, 16), Cells(rg1.Offset(i, 0).Columns.Row, 1)).Address
'Range(Cells(rg1.Offset(i, 0).Columns.Row, 16), Cells(rg1.Offset(i, 0).Columns.Row, 1)).Copy Destination:=Worksheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0)
End If
End If
End If
End If
End If
End If
Next i
End If
Next rg1
End If
Next j
For n = 1 To (lcl + 1) Step 2
With Range("Q18:Q" & lr).Offset(0, n - 1).Font
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0
End With
Next n
Application.CutCopyMode = False
End Sub
Em có hàm If..and:
If ((n >= a) And _
(rg1.Offset(i, 0).Offset(0, -1).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -5).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -7).Value <> "x") And _
(rg1.Offset(i, 0).Offset(0, -9).Value <> "x")) Then
rg1.Offset(i, 0).Offset(0, 1).Value = "x"
Else
rg1.Offset(i, 0).Offset(0, 1).Value = "-"
End If
a: là giá trị tương ứng ở cột "O"
n: là giá trị tính toán ra (AK18:AK27)
Khi n = 4, a= 5 hàm lại trả về giá trị "x". em tìm mãi ma không ra lỗi.
Đúng ra n(4)>=a(5): false hàm phải trả về "-".
Anh/chị và các Thầy giúp em với.
Em có gửi file đính kèm.
Em xin hỏi thêm có cách nào để sửa code trên cho nhanh hơn và tối ưu hơn không ạ!
Em xin cảm ơn!
File đính kèm
Lần chỉnh sửa cuối: