Excel - Tìm giá trị tối đa cứ sau 10 hàng và đánh dấu hàng

Vấn đề

Tôi cần trợ giúp để tạo công thức trong excel để xác định giá trị cao nhất và thấp nhất Cứ sau 10 hàng THÌ Xác định hai hàng đó bằng cách đặt một số văn bản hoặc số vào một cột trống trong các hàng có giá trị cao nhất và thấp nhất. Ví dụ: tôi muốn trả lại từ giữ trong Cột A3 CHỈ với giá giao dịch cao nhất và thấp nhất cho mỗi lần nhập 10 hàng. Bằng cách này, tôi có thể sắp xếp dữ liệu bằng cách Giữ và xóa 8 hàng dữ liệu khác. Bằng cách này tôi có thể giữ hầu hết tính toàn vẹn dữ liệu của mình và giảm đáng kể kích thước của tệp.

Tôi đang sử dụng Excel 2007 và tôi có 160.000 hàng dữ liệu. Mục đích của công thức là cắt giảm 80% dữ liệu này

Bảng tính dưới đây cho một ví dụ đơn giản.

 Thời gian giao dịch Giá C là một cột trống cho công thức đặt ra ___________A__________B___________ Hàng 1 19:30:25 121.81 Hàng 2 19:30:26 121.80 Giữ hàng 3 19:30:29 121.83 Hàng 4 19:30:31 121.86 Giữ hàng 5 19 : 39: 35 121, 84 

Mọi sự trợ giúp sẽ rất được trân trọng.

Dung dịch

Có 3 macro "test", "test1" và "hoàn tác". Test1 được nhúng trong "test", vậy là đủ nếu bạn chỉ chạy macro "test".

Tất cả ba macro nên có trong mô-đun. Macro "hoàn tác" hoàn tác các kết quả macro.

Lấy một trích xuất nhỏ dữ liệu của bạn về 31 hàng và kiểm tra macro. Nếu kết quả ổn, bạn có thể sử dụng macro trên tệp gốc của mình

GIỮ NHỮNG FILE NGUỒN GỐC HOÀN TOÀN SAU ĐÓ LÀ R ITNG NÓ CÓ THỂ ĐƯỢC TRẢ LẠI.

Macro 1:

 Dim r As Range, r1 As Range, x As Double, y As Double Dim j As Integer, k As Integer Dim r2 As Range, m As Integer Sub test () Worksheet ("sheet1"). Kích hoạt Phạm vi ("c1") = "signal" Đặt r2 = Phạm vi (Phạm vi ("B1"), Phạm vi ("B1"). Kết thúc (xlDown)) j = 1 m = 1 Do Đặt r = Ô (j * m + 1, "B") MsgBox r.Address Set r1 = Range (r, r. Offerset (9, 0)) MsgBox r1.Address If r. Offerset (9, 0) = "" Sau đó Thoát Do x = WorksheetFunction.Min (r1) y = WorksheetFunction .Max (r1) MsgBox x MsgBox yk = WorksheetFunction.Match (x, r2, 0) Các ô (k, "c") = "giữ" k = WorksheetFunction.Match (y, r2, 0) Các ô (k, "c ") =" giữ "m = m + 10 MsgBox m Vòng lặp test1 Kết thúc Sub 

Macro 2:

 Sub test1 () Worksheet ("sheet1"). Kích hoạt Set r = Range (Phạm vi ("A1"), Phạm vi ("A1"). End (xlDown) .Packset (0, 3)) r.AutoFilter trường: = 3, Criteria1: = "keep" r.Cells.ecialCells (xlCellTypeVisible) .Copy Worksheet ("sheet2"). Range ("A2") ActiveSheet.AutoFilterMode = false End Sub 

Macro 3:

 Sub undo () Worksheet ("sheet1"). Range ("c1"). EntireColumn.Delete Worksheet ("sheet2"). Cells.Clear End Sub 

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