Lọc Excel 2010 động


0

Tôi có một bảng dữ liệu lớn có ngày trên đầu trang. Điều này có bộ lọc được bật. Tôi cần sắp xếp dữ liệu này (Lớn nhất đến nhỏ nhất) dựa trên ngày được nhập vào trường do người dùng xác định. Nhưng tôi không biết làm thế nào để làm cho năng động này.

Vì vậy, giả sử tôi có 12 colums với tháng ở đầu mỗi và sau đó là một bộ số bên dưới. Nếu tôi nhập Feb vào một ô cụ thể thì tôi muốn excel sắp xếp theo colum Feb từ lớn nhất đến nhỏ nhất. Nếu sau đó tôi thay đổi ô Tháng Hai thành Tháng Năm, tôi muốn nó sắp xếp trên dữ liệu Tháng Năm

Xin mọi người giúp đỡ


1
Bạn có nghĩa là bạn cần một loại sắp xếp theo cột?
chuff

1
"Sắp xếp dữ liệu dựa trên ngày đã nhập" chính xác như thế nào?
Karan

Vì vậy, giả sử tôi có 12 colums với tháng ở đầu mỗi và sau đó là một bộ số bên dưới. Nếu tôi nhập Feb vào một ô cụ thể thì tôi muốn excel sắp xếp theo colum Feb từ lớn nhất đến nhỏ nhất. Nếu sau đó tôi thay đổi ô Tháng Hai thành Tháng Năm, tôi muốn nó sắp xếp trên dữ liệu Tháng Năm
simon

Những gì bạn đã thử và / hoặc nghiên cứu? Bạn đang sử dụng phiên bản Excel nào? Là hiệu ứng mong muốn để sắp xếp toàn bộ bảng hoặc chỉ cột cụ thể?
CharlieRB

Câu trả lời:


1

Theo tôi hiểu, bạn có một bộ dữ liệu hàng tháng mà tôi sẽ giả sử kéo dài từ tháng 1 đến tháng 12, với dữ liệu mỗi tháng được liệt kê trong một cột riêng biệt và với một ô tiêu đề. Bạn muốn có thể sắp xếp tập dữ liệu này dựa trên các giá trị lớn nhất đến nhỏ nhất trong một tháng cụ thể, với tháng được chọn bởi một mục nhập vào một ô trong trang tính.

Mặc dù có thể tạo ra một màn hình được sắp xếp của các giá trị trong tập dữ liệu bằng các công thức bảng tính, nhưng chính tập dữ liệu sẽ không được sắp xếp và cần phải được lọc.

Sử dụng VBA sẽ cho phép một cách tiếp cận đơn giản hơn đáng kể có thêm lợi ích là có thể xử lý dữ liệu được lọc.

Tôi giả sử rằng mục nhập của tháng để sắp xếp theo sẽ ở trong ô A1, đã được đặt tên sort_month. Dữ liệu, bao gồm một tiêu đề cho tên tháng, nằm trong các cột B - M. Phạm vi dữ liệu được đặt tên filtered_data; trong dữ liệu ví dụ của tôi, đây là phạm vi B1:M25.

Mã VBA sẽ thực hiện sắp xếp khá ngắn:

  Private Sub Worksheet_Change(ByVal Target As Range)
      If Not (Intersect(Target, Range("sort_month")) Is Nothing) Then
          Dim theMonth As Long
          theMonth = month(DateValue("01-" & Range("sort_month").Value & "-1900"))
          Range("filtered_data").Sort Key1:=Cells(1, theMonth + 1), _
              Order1:=xlDescending, header:=xlYes
      End If
  End Sub

Chương trình con này sẽ tự động chạy bất cứ khi nào có thay đổi sort_month (tức là, tế bào A1 ). Sẽ hợp lý khi thiết lập xác thực dữ liệu trên ô này để đảm bảo rằng chỉ các tên tháng hợp lệ ("tháng 1", "tháng 2", v.v.) có thể được nhập vào ô này.

Mã không nên được đặt trong một mô-đun VBA tiêu chuẩn, mà thay vào đó nên được gắn vào bảng tính. Có thể truy cập ngăn mã cho trang tính bằng cách nhấp chuột phải vào tab của trang tính và chọn "Xem mã". Mã sau đó có thể được dán vào khung.

Mặc dù nó có thể nằm ngoài nhu cầu của bạn, nhưng bảng có thể sắp xếp có thể dễ dàng thiết lập để sử dụng chung (tức là, không phải nhà phát triển). Phiên bản hiển thị bên dưới có xác thực dữ liệu thả xuống cho mục nhập tháng, định dạng bảng được thêm để dễ đọc và định dạng có điều kiện để làm nổi bật cột sắp xếp.

formatted sortable table

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.