Giúp mình chỉnh lại code cho ngắn gọn ?

Liên hệ QC

huynhphuong thcspt

Thành viên mới
Tham gia
31/8/18
Bài viết
45
Được thích
10
Đây là code mình viết, nhờ Anh Chị trên diễn đàn chỉnh lại cho gọn nhẹ. Xin cảm ơn:
Sub CHON_NH()
Application.ScreenUpdating = False

If Sheets("MN").Range("D5").Value = "2020" Then
Sheets("TK").Select
Range("D5") = "2020"
Range("E5") = "2019"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2021" Then
Sheets("TK").Select
Range("D5") = "2021"
Range("E5") = "2020"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2022" Then
Sheets("TK").Select
Range("D5") = "2022"
Range("E5") = "2021"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2023" Then
Sheets("TK").Select
Range("D5") = "2023"
Range("E5") = "2022"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2024" Then
Sheets("TK").Select
Range("D5") = "2024"
Range("E5") = "2023"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2025" Then
Sheets("TK").Select
Range("D5") = "2025"
Range("E5") = "2024"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2026" Then
Sheets("TK").Select
Range("D5") = "2026"
Range("E5") = "2025"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2027" Then
Sheets("TK").Select
Range("D5") = "2027"
Range("E5") = "2026"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2028" Then
Sheets("TK").Select
Range("D5") = "2028"
Range("E5") = "2027"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

If Sheets("MN").Range("D5").Value = "2029" Then
Sheets("TK").Select
Range("D5") = "2029"
Range("E5") = "2028"
Range("D5:E5").Select
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
Sheets("MN").Select
MsgBox " OK... !!!"
End If

Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • TK.xlsm
    20.7 KB · Đọc: 10
Sub Fill_Data()
Dim arr, i As Long
arr = Sheets("TK").Range("D5:BL5")
arr(1, 1) = Sheets("MN").Range("D5")
For i = 1 To UBound(arr, 2) - 1
arr(1, i + 1) = arr(1, i) - 1
Next
Range("D5").Resize(1, UBound(arr, 2)).Value = arr
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Sub Fill_Data2()
With Sheets("TK")
.Range("D5") = Sheets("MN").Range("D5")
For i = 1 To 60
.Cells(5, i + 4) = .Cells(5, i + 3) - 1
Next
End With
End Sub
 
Upvote 0
Cảm ơn bạn nhiều. Quá tuyệt vời luôn.
Đôi lời với bạn, hy vọng giúp ích cho bạn sau này khi tự viết code:
Bạn chọn cú pháp Autofill cũng được nhưng ý nghĩ về 2 cell khởi điểm của bạn chưa đúng. Đây là hướng đúng cho AutoFill của bạn:

1. Cho dù Sheets("MN").Range("D5").Value bằng bao nhiêu đi nữa thì bạn vẫn có thể đưa nó qua Sheets("TK") bằng câu:
Sheets("TK").Range("D5") = Sheets("MN").Range("D5")
Thế là bỏ được cả đống IF

2. Sau đó trừ bớt 1 của cell D5 là ra giá trị cho cell E5
Sheets("TK").Range("E5") = Sheets("TK").Range("D5") - 1

3. Cuối cùng là AutoFill thôi:
Sheets("TK").Activate
Selection.AutoFill Destination:=Range("D5:BL5"), Type:=xlFillDefault
 
Upvote 0
Web KT
Back
Top Bottom