VBA Lọc dữ liệu và chèn hàng.

Liên hệ QC

LEHOC

Thành viên chính thức
Tham gia
11/1/17
Bài viết
89
Được thích
0
Em có file này, bác nào biết dùng vba để lọc giá trị lớn hơn 5 của cột H từ ô H6 đến dòng dữ liệu cuối cùng (tìm động theo kiều xLastRow). Sau khi lọc thì chèn thêm dòng ngay bên dưới mỗi dòng dữ liệu lọc được rồi sao chép hết các dữ liệu của dòng trên xuống dưới. Sau khi đã có dữ liệu mới thì sửa giá trị trong ô ở cột H, dòng trên sẽ xóa bỏ giá trị từ dấu "/" đến hết (bên phải); dòng dưới sẽ xóa bỏ giá trị từ dấu " " trở về đầu (bên trái).
Em cảm ơn!
 

File đính kèm

  • demo2.xlsm
    80.4 KB · Đọc: 10
Em có file này, bác nào biết dùng vba để lọc giá trị lớn hơn 5 của cột H từ ô H6 đến dòng dữ liệu cuối cùng (tìm động theo kiều xLastRow). Sau khi lọc thì chèn thêm dòng ngay bên dưới mỗi dòng dữ liệu lọc được rồi sao chép hết các dữ liệu của dòng trên xuống dưới. Sau khi đã có dữ liệu mới thì sửa giá trị trong ô ở cột H, dòng trên sẽ xóa bỏ giá trị từ dấu "/" đến hết (bên phải); dòng dưới sẽ xóa bỏ giá trị từ dấu " " trở về đầu (bên trái).
Em cảm ơn!
Sửa dữ liệu trong Ô cột H thành gì vậy ta.Mà cho ví dụ có đúng 1 trường hợp.Bạn cho cái kết quả khi chạy code cái.
 
Tham khảo file đính kèm.
Mã:
Sub Button2_Click()
Dim Rng As Range, i As Long, wS As Worksheet
Set wS = Sheets("Table convert")
Set Rng = wS.Range("A6:I" & wS.Range("A65535").End(xlUp).Row)
If Rng.Rows.Count > 5 Then
    For i = Rng.Rows.Count To 1 Step -1
        If Rng(i, 8).Value > 5 Then
            Rng(i, 8).Offset(1).EntireRow.Insert
            Rng(i, 1).Resize(2, 9).FillDown
            Rng(i, 5) = Left(Rng(i, 5), InStr(Rng(i, 5), "/") - 1)
            Rng(i, 5).Offset(1) = Right(Rng(i, 5).Offset(1), InStr(Rng(i, 5).Offset(1), " ") - 1)
        End If
    Next i
End If
End Sub
 

File đính kèm

  • demo2.xlsm
    85.9 KB · Đọc: 8
Tham khảo file đính kèm.
Mã:
Sub Button2_Click()
Dim Rng As Range, i As Long, wS As Worksheet
Set wS = Sheets("Table convert")
Set Rng = wS.Range("A6:I" & wS.Range("A65535").End(xlUp).Row)
If Rng.Rows.Count > 5 Then
    For i = Rng.Rows.Count To 1 Step -1
        If Rng(i, 8).Value > 5 Then
            Rng(i, 8).Offset(1).EntireRow.Insert
            Rng(i, 1).Resize(2, 9).FillDown
            Rng(i, 5) = Left(Rng(i, 5), InStr(Rng(i, 5), "/") - 1)
            Rng(i, 5).Offset(1) = Right(Rng(i, 5).Offset(1), InStr(Rng(i, 5).Offset(1), " ") - 1)
        End If
    Next i
End If
End Sub
Cảm ơn bác!
 
Em có file này, bác nào biết dùng vba để lọc giá trị lớn hơn 5 của cột H từ ô H6 đến dòng dữ liệu cuối cùng (tìm động theo kiều xLastRow). Sau khi lọc thì chèn thêm dòng ngay bên dưới mỗi dòng dữ liệu lọc được rồi sao chép hết các dữ liệu của dòng trên xuống dưới. Sau khi đã có dữ liệu mới thì sửa giá trị trong ô ở cột H, dòng trên sẽ xóa bỏ giá trị từ dấu "/" đến hết (bên phải); dòng dưới sẽ xóa bỏ giá trị từ dấu " " trở về đầu (bên trái).
Em cảm ơn!
Cái này theo tôi thì sử dụng Advaced Filter, muốn sửa hay thêm bớt cái gì đó là làm tùy ý sau đó lưu tiếp theo bên dưới thì code sẽ dễ dàng và ngắn gọn hơn.
 
Các bác xem lại giúp em modules "md3ConverseData" trong file demo2.xlsm với ạ, sao em bị lỗi Overflow ạ, theo em tự tìm hiểu thì do vượt quá giới hạn bộ nhớ kiểu Integer, nhưng thực tế trong file của em, biến j của em không dùng hết kiểu Int, các bác xem giúp em sai chỗ nào với ạ.
 

File đính kèm

  • dataimport.xlsx
    49.5 KB · Đọc: 1
  • demo2.xlsm
    105 KB · Đọc: 3
Web KT

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

Back
Top Bottom