Nhờ hướng dẫn công thức để làm macro chèn dòng (1 người xem)

Liên hệ QC

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

linh lém lỉnh

Thành viên mới
Tham gia
25/10/12
Bài viết
1
Được thích
0
Chào các anh, chị,

Trong file dưới đây, em cần chèn thêm ở phía trên những dòng mà có giá trị ở cột C >0 ( VÍ dụ: Ô C5=1 thì chèn thêm 1 dòng phía trên dòng 5, ô C146 = 6 thì chèn thêm 6 dòng phía trên dòng 146). Sau đó sao chép công thức cột B và C cho những dòng mới chèn và dòng liền kề sau nó và tô màu nền cho những dòng mới chèn.

Em hiện không biết làm sao để Excel hiểu và tìm chọn những dòng có điều kiện trên mà Insert thêm dòng, mong mọi người hướng dẫn giúp em vì số liệu hơi nhiều nên nếu em tự Insert từng dòng thì rất lâu ạ.

Em cám ơn anh, chị rất nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
đã làm ví dụ cho bạn (xem file đính kèm)

Private Sub cmdChenDong_Click()
Dim i As Long, LastRow As Long
LastRow = UsedRange.Row + UsedRange.Rows.Count - 1
For i = 2 To LastRow
If Cells(i, 3) > 0 And Cells(i, 6) = vbNullString Then
Cells(i, 6) = "R"
Rows(i & ":" & i + Cells(i, 3) - 1).Insert Shift:=xlDown
End If
Next
End Sub

P/S:
- có một số dòng ở cột C có giá trị -1 không biết là ý gì. có phải là thêm dòng ở phía dưới không? nếu đúng bạn thử tự sửa code xem sao.
- nếu bạn muốn chèn luôn khi nhập số vào cột C bạn viết code trong sự kiện UserForm_Change và bỏ vòng lặp for, sửa biến i thành Activecell.Row. (tui không viết luôn là có ý để bạn tự làm)
-phải thêm "R" vào côt thứ 6 là tránh việc nhấn nút nhiều lần, chèn tùm lum.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
đã làm ví dụ cho bạn (xem file đính kèm)

Private Sub cmdChenDong_Click()
Dim i As Long, LastRow As Long
LastRow = UsedRange.Row + UsedRange.Rows.Count - 1
For i = 2 To LastRow
If Cells(i, 3) > 0 And Cells(i, 6) = vbNullString Then
Cells(i, 6) = "R"
Rows(i & ":" & i + Cells(i, 3) - 1).Insert Shift:=xlDown
End If
Next
End Sub
Không biết bạn đã test code chưa nhưng theo nguyên tắc thêm dòng xóa dòng thì phải duyệt ngược từ dưới lên nếu không gán vào mảng rồi trả lại thì không cần duyệt ngược
 
Upvote 0
Không biết bạn đã test code chưa nhưng theo nguyên tắc thêm dòng xóa dòng thì phải duyệt ngược từ dưới lên nếu không gán vào mảng rồi trả lại thì không cần duyệt ngược

@nmhung49: không rõ "nguyên tắc" của bạn lắm. bạn chạy thử file đính kèm (đã sửa) xem sao. xưa nay mình thuộc dạng "bất quy tắc", thường làm đại, không trúng thì trật. thanks anyway.
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu bạn không theo duyệt từ dưới lên trên thì khi xác định dòng dữ liệu cuối cùng không đủ, nên khi bạn chỉnh code lại thành gấp 2 thì ok vì lỡ nếu chèn nhiều dòng hơn thì tiếp tục bị sai khi đó có thể gấp 3,4 lần...Code chạy ở bài trên ok. Đây là cách của mình như chạy trực tiếp trên sheet tốc độ có thể chậm
 

File đính kèm

Upvote 0
Chèn dòng

Nếu bạn không theo duyệt từ dưới lên trên thì khi xác định dòng dữ liệu cuối cùng không đủ, nên khi bạn chỉnh code lại thành gấp 2 thì ok vì lỡ nếu chèn nhiều dòng hơn thì tiếp tục bị sai khi đó có thể gấp 3,4 lần...Code chạy ở bài trên ok. Đây là cách của mình như chạy trực tiếp trên sheet tốc độ có thể chậm

Mình cũng đang có vấn đề này. Bạn có thể giúp mình chèn từng dòng giữa các dòng có sẵn được không ? Mình cũng đang cần gấp.

Cảm ơn.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom