Excel - Tạo macro để tìm kiếm và sao chép

Vấn đề

Tôi có một bảng tính với tất cả các ngày khác nhau với dữ liệu tương ứng trong hàng của nó. Có nhiều hàng có cùng ngày và tôi muốn tạo một macro để tìm kiếm tất cả các ngày giống nhau và sao chép và dán chúng vào bảng 2 để tôi có thể đặt chúng theo thứ tự

thí dụ:

 27-ngày 27 tháng 9 đến ngày 27 tháng 9 đến ngày 28 tháng 9 đến ngày 28 tháng 9 ngày 01 tháng 10 đến ngày 10 tháng 10 

Tôi không biết làm thế nào để tạo một macro tuy nhiên tôi đã tìm kiếm trên internet để tìm một cái mà tôi có thể sửa đổi để chèn dữ liệu của riêng mình, và đây là những gì tôi nghĩ ra.

 Sub SearchForString () Dim LSearchRow As Integer Dim LCopyToRow As Integer On Error GoTo Err_Execute 'Bắt ​​đầu tìm kiếm trong hàng 6 LSearchRow = 6' Bắt đầu sao chép dữ liệu vào hàng 110 trong Sheet2 (biến số của hàng) & CStr (LSearchRow)). Giá trị)> 0 'Nếu giá trị trong cột A = "27-tháng 9", sao chép toàn bộ hàng vào Sheet2 If Range ("A" & CStr (LSearchRow)). Value = "27 = Sep" Sau đó 'Chọn hàng trong Trang tính 1 để sao chép Hàng (CStr (LSearchRow) & ":" & CStr (LSearchRow)). Chọn Lựa chọn. Dán' Dán hàng vào Trang tính 2 trong hàng tiếp theo Trang tính ("Trang tính 2"). & ":" & CStr (LCopyToRow)). Chọn ActiveSheet.Paste 'Di chuyển bộ đếm sang hàng tiếp theo LCopyToRow = LCopyToRow + 1' Quay trở lại Sheet1 để tiếp tục tìm kiếm Sheets ("Sheet1"). 'Vị trí trên ô A109 Application.CutCopyMode = Sai Phạm vi ("A109"). Chọn MsgBox "Tất cả dữ liệu phù hợp đã được sao chép." Thoát Sub Err_Execute: MsgBox "Xảy ra lỗi." Kết thúc phụ 

Dung dịch

Tôi đang đưa ra hai macro "thử nghiệm" và "hoàn tác"

bảng mẫu giống như thế này (sheet1) -không cần thiết để sắp xếp

dữ liệu ngày1 dữ liệu2

3/1/2010 37 1

3/2/2010 65 96

3/3/2010 48 46

3/2/2010 78 54

3/5/2010 3 38

3/2/2010 83 58

3/3/2010 45 78

thử "kiểm tra" macro và xem sheet2

nếu bạn muốn thi lại

1.bạn "hoàn tác"

sau đó

2.rung "kiểm tra"

các macro là

 Kiểm tra phụ () Dim r As Range, r1 As Range, r2 As Range Dim c2 As Range, cfind As Range Worksheet ("sheet1"). Kích hoạt Đặt r = Range (Phạm vi ("A1"), Phạm vi ("A1") .End (xlDown)) Đặt r1 = Range ("a1"). End (xlDown) .Packset (5, 0) r. .Packset (1, 0), r1.End (xlDown)) Với mỗi c2 Trong r2 If WorksheetFunction.Count If (r, c2)> 1 Then With Range ("A1"). CurrentRegion .AutoFilter = c2.Value .Cells. SpecialCells (xlCellTypeVisible) .Copy Worksheet ("sheet2"). Cells (Rows.Count, "A"). End (xlUp). Offerset (1, 0). AutoFilterMode = false Next c2 Worksheet ("sheet2"). Kích hoạt Do Set cfind = ActiveSheet.Cells.Find (what: = "date", lookat: = xlWhole, after: = Range ("A2")) Nếu cfind là gì thì Thoát Do cfind.EntireRow.Delete Loop Worksheet ("sheet1"). Range ("A1"). EntireRow.Copy Worksheet ("sheet2"). Range ("A1"). Paste Application Application.CutCopyMode = false End Sub Sub undo ( ) Bảng tính ("sheet2"). Các ô. Xóa kết thúc phụ 

chú thích

Cảm ơn venkat1926 cho mẹo này trên diễn đàn.

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên