viendo
Tầm sư học Excel
- Tham gia
- 5/10/07
- Bài viết
- 516
- Được thích
- 749
- Nghề nghiệp
- Kỹ Thuật Dệt
Do tự ghi macro và sửa chạy theo nhu cầu tách số liệu hàng tháng, hiện cũng chạy được tuy nhiên do số liệu xử lý khoảng 25.000 dòng với code tự làm chạy rất lâu. Nay nhờ các Anh Chị giúp viết giúp code nhằm rút ngắn thời gian xử lý.
Code tự làm :
Gửi kèm file có yêu cầu tách số liệu và vài dòng dữ liệu để test.
Cám ơn các Anh Chị.
Code tự làm :
Mã:
Sub TachSL()
Sheets("Tach").Select
If Range("a1") = "DaTach" Then Exit Sub
Range("a3").Select
Do While ActiveCell <> ""
ActiveCell.Offset(0, 23).Range("A1").Select
If ActiveCell = "ÑEÂM" And ActiveCell.Offset(0, -1) = "Thöôøng" Then
ActiveCell.Offset(1, -23).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(-1, 0).Range("A1:af1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(-1, 12).Value = 2 * ActiveCell.Offset(-1, 12).Value / 3
ActiveCell.Offset(0, 23).Value = "NGAØY"
ActiveCell.Offset(0, 12).Value = 1.5 * ActiveCell.Offset(0, 12).Value / 3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell = "ÑEÂM" And ActiveCell.Offset(0, -1) = "ChuNhat" Then
ActiveCell.Offset(1, -23).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(-1, 0).Range("A1:af1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(-1, 12).Value = 2 * ActiveCell.Offset(-1, 12).Value / 3
ActiveCell.Offset(0, 23).Value = "NGAØY"
ActiveCell.Offset(0, 12).Value = ActiveCell.Offset(0, 12).Value / 3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell = "NGAØY" And ActiveCell.Offset(0, -1) = "Thöôøng" Then
ActiveCell.Offset(1, -23).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(-1, 0).Range("A1:af1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(-1, 12).Value = 2 * ActiveCell.Offset(-1, 12).Value / 3
ActiveCell.Offset(0, 12).Value = 1.5 * ActiveCell.Offset(0, 12).Value / 3
ActiveCell.Offset(1, 0).Select
ElseIf ActiveCell = "NGAØY" And ActiveCell.Offset(0, -1) = "ChuNhat" Then
ActiveCell.Offset(1, -23).Select
End If
Loop
Range("a1").Value = "DaTach"
End Sub
Gửi kèm file có yêu cầu tách số liệu và vài dòng dữ liệu để test.
Cám ơn các Anh Chị.