Tham khảo. . . . .cần sao chép các dòng dữ liệu ở sheet1 (mà dữ liệu ở cột A khác trống) và dán sang sheet2
Thêm cách khác tham khảo:Em cảm ơn tất cả mọi người đã quan tâm và trợ giúp ạ.
Sub ABC()
Dim Rng As Range
Set Rng = Sheets("sheet1").Range("A1:B" & Sheets("sheet1").Range("B" & Rows.Count).End(3).Row)
Sheets("sheet2").Range("A:B").ClearContents
Rng.AutoFilter 1, "<>"
Rng.SpecialCells(12).Copy Sheets("Sheet2").Range("A1")
Sheets("sheet1").AutoFilterMode = False
End Sub
Nếu A trống mà B không trống thì code chạy sai á ! Thớt muốn chỉ A không trống mới chép chứ B không đi theo A như ví dụ thì sao?Thêm cách khác tham khảo:
Mã:Sub ABC() Dim Rng As Range Set Rng = Sheets("sheet1").Range("A1:B" & Sheets("sheet1").Range("B" & Rows.Count).End(3).Row) Sheets("sheet2").Range("A:B").ClearContents Rng.AutoFilter 2, "<>" Rng.SpecialCells(12).Copy Sheets("Sheet2").Range("A1") Sheets("sheet1").AutoFilterMode = False End Sub
Em nhầm xíu. Đã sửa lại #3Nếu A trống mà B không trống thì code chạy sai á ! Thớt muốn chỉ A không trống mới chép chứ B không đi theo A như ví dụ thì sao?
Cảm ơn tiền bối đã góp ý. Nhưng em xin phép trao đổi thêm về ý tưởng (mong bác có góp ý để hiện thực hóa ý tưởng).Tham khảo. . . . .
Cảm ơn tiền bối đã góp ý. Mong muốn của em là điều kiện theo cột A thôi bác ạ.Nếu A trống mà B không trống thì code chạy sai á ! Thớt muốn chỉ A không trống mới chép chứ B không đi theo A như ví dụ thì sao?
Thử code ngăn ngắn sau xem sao:Chào cả nhà, em có file demo dữ liệu đính kèm, rất mong được góp ý ạ,
Em đang cần sao chép các dòng dữ liệu ở sheet1 (mà dữ liệu ở cột A khác trống) và dán sang sheet2 .
Em cảm ơn tất cả mọi người đã quan tâm và trợ giúp ạ.
Sub CopyCellsNotBlank()
Dim Rng As Range
Set Rng = Sheets("sheet1").Range("A1:A" & Sheets("sheet1").Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeConstants)
Sheets("sheet2").Range("A1:B50000").ClearContents
Rng.EntireRow.Copy Sheets("Sheet2").Range("A1")
End Sub
Giải pháp của bác code khá ngắn gọn ạ, nhưng cho cho em xin thêm chút ý kiến làm sao để copy các cột dữ liệu tùy chọn mà không phải copy hết cả dòng không ạ. Ví dụ em cần copy cột A, C,D,F nếu các dòng ở A khác rỗng đấy ạ.Thử code ngăn ngắn sau xem sao:
Rich (BB code):Sub CopyCellsNotBlank() Dim Rng As Range Set Rng = Sheets("sheet1").Range("A1:A" & Sheets("sheet1").Range("B" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeConstants) Sheets("sheet2").Range("A1:B50000").ClearContents Rng.EntireRow.Copy Sheets("Sheet2").Range("A1") End Sub
Option Explicit
Sub test()
Dim lr&
Worksheets("Sheet2").Range("A:F").ClearContents
With Worksheets("Sheet1")
.AutoFilterMode = False
lr = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A1:A" & lr).AutoFilter 1, "<>"
.Range("A1:F" & lr).SpecialCells(xlVisible).Copy Worksheets("Sheet2").Range("A1")
.AutoFilterMode = False
Application.CutCopyMode = False
End With
Union(Worksheets("Sheet2").Range("B1").EntireColumn, Worksheets("Sheet2").Range("E1").EntireColumn).Delete
End Sub
Cảm ơn bác rất nhiều ạ.Thử:
PHP:Option Explicit Sub test() Dim lr& Worksheets("Sheet2").Range("A:F").ClearContents With Worksheets("Sheet1") .AutoFilterMode = False lr = .Cells(Rows.Count, "A").End(xlUp).Row .Range("A1:A" & lr).AutoFilter 1, "<>" .Range("A1:F" & lr).SpecialCells(xlVisible).Copy Worksheets("Sheet2").Range("A1") .AutoFilterMode = False Application.CutCopyMode = False End With Union(Worksheets("Sheet2").Range("B1").EntireColumn, Worksheets("Sheet2").Range("E1").EntireColumn).Delete End Sub
Thế thì nó sẽ không còn ngắn gọn nữa.Giải pháp của bác code khá ngắn gọn ạ, nhưng cho cho em xin thêm chút ý kiến làm sao để copy các cột dữ liệu tùy chọn mà không phải copy hết cả dòng không ạ. Ví dụ em cần copy cột A, C,D,F nếu các dòng ở A khác rỗng đấy ạ.
Cảm ơn các bác rất nhiều.
Option Explicit
Sub Test()
Dim lr&, i&, j&, k&, kv, arr, arrb(1 To 65000, 1 To 6)
With Worksheets("Sheet2")
arr = Worksheets("Sheet1").Range("A1:G" & Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row).Value
For i = 1 To UBound(arr)
If arr(i, 1) <> "" Then kv = arr(i, 1)
If arr(i, 2) <> "" Then
k = k + 1
arrb(k, 1) = kv
For j = 2 To 5
arrb(k, j) = arr(i, j)
Next
arrb(k, 6) = arr(i, 7)
End If
Next
.Range("A1:G100000").ClearContents
.Range("A1").Resize(k, 6).Value = arrb
End With
End Sub
Vì đây không phải là bài toán cố định mà em tự đặt ra yêu cầu để học tập và trong quá trình đặt ra câu hỏi thì phát sinh thêm ý tưởng ạ, mong bác thông cảm cho em ạ.Vụ này từ bài đầu đến #10 đã bổ sung và đổi ý đến 3 lần rồi. Sao không chốt 1 lần cho xong đi nhỉ.
Cảm ơn bác đã chia sẻ ạ, em xin phản hồi bác như sau: em có biết về Advanced Filter, nhưng đây là vấn đề em tự đặt ra để tìm thêm các hướng giải quyết vấn đề nhằm mục đích học tập ạ, mong bác thông cảm.Cái này rõ ràng là chức năng của Advanced Filter mà.
Đổ công sức viết code để tiết kiệm vài cái click chuột? Hay là xin code VBA dễ quá rồi người ta lười học các công cụ căn bản của Excel?
Cảm ơn tiền bối rất nhiều ạ.PHP:Option Explicit Sub Test() Dim lr&, i&, j&, k&, kv, arr, arrb(1 To 65000, 1 To 6) With Worksheets("Sheet2") arr = Worksheets("Sheet1").Range("A1:G" & Worksheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row).Value For i = 1 To UBound(arr) If arr(i, 1) <> "" Then kv = arr(i, 1) If arr(i, 2) <> "" Then k = k + 1 arrb(k, 1) = kv For j = 2 To 5 arrb(k, j) = arr(i, j) Next arrb(k, 6) = arr(i, 7) End If Next .Range("A1:G100000").ClearContents .Range("A1").Resize(k, 6).Value = arrb End With End Sub
Cảm ơn tiền bối ạThêm cách khác tham khảo:
Mã:Sub ABC() Dim Rng As Range Set Rng = Sheets("sheet1").Range("A1:B" & Sheets("sheet1").Range("B" & Rows.Count).End(3).Row) Sheets("sheet2").Range("A:B").ClearContents Rng.AutoFilter 1, "<>" Rng.SpecialCells(12).Copy Sheets("Sheet2").Range("A1") Sheets("sheet1").AutoFilterMode = False End Sub
Không hểu lắm. Tiền giấy, tiền vàng, tiền thật, tiền giả, tiền xu, thậm chí tiền thối (nặng mùi? ) đều đã nghe rồi. Không biết tiền bối là tiền gì vậy bạn?Cảm ơn tiền bối rất nhiều ạ.
Bài đã được tự động gộp:
Cảm ơn tiền bối ạ
Em không biết xưng hô sao cho phù hợp, bác bỏ qua nhé.Không hểu lắm. Tiền giấy, tiền vàng, tiền thật, tiền giả, tiền xu, thậm chí tiền thối (nặng mùi? ) đều đã nghe rồi. Không biết tiền bối là tiền gì vậy bạn?
Không biết xưng hô sao phù hợp, vậy sao bạn dùng từ "bác" với tôi? Cũng y hệt bạn có thể dùng từ "bác" với họ mà.Em không biết xưng hô sao cho phù hợp, bác bỏ qua nhé.
Vâng, em đã điều chỉnh rồi đó bác.Không biết xưng hô sao phù hợp, vậy sao bạn dùng từ "bác" với tôi? Cũng y hệt bạn có thể dùng từ "bác" với họ mà.
Có thể người khác dễ dãi chứ tôi có nguyên tắc của mình, khó thông cảm chuyện này lắm....
Cảm ơn bác đã chia sẻ ạ, em xin phản hồi bác như sau: em có biết về Advanced Filter, nhưng đây là vấn đề em tự đặt ra để tìm thêm các hướng giải quyết vấn đề nhằm mục đích học tập ạ, mong bác thông cảm.