hỏi về cách tạo autofillter cho hàng ngang

Liên hệ QC

mèo mun

Thành viên mới
Tham gia
9/12/09
Bài viết
11
Được thích
0
Thông thường thì Autofillter được dùng để lọc dữ liệu theo hàng dọc. Nếu em muốn tạo autofillter cho hàng ngang thì làm sao ah???
Đính kèm theo file minh hoạ
 

File đính kèm

Thông thường thì Autofillter được dùng để lọc dữ liệu theo hàng dọc. Nếu em muốn tạo autofillter cho hàng ngang thì làm sao ah??? Đính kèm theo file minh hoạ

File đính kèm của bạn là bảng trống trơn vậy thì biết sao mà chìu bạn đây cơ chứ?

(Mình nghĩ VBA có thể làm thỏa yêu cầu của bạn, một khi bạn đưa lại file đính kèm) :-= --=0 :-=
 
Bạn thử dùng code như bài của mình nhé

PHP:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Target.Address = "$D$2" Then
Application.ScreenUpdating = False
For i = 1 To 31
If Sheet1.Cells(4, (i * 3 - 2) + 5) = Target Then
Sheet1.Columns((i * 3 - 2) + 5).Hidden = False
Sheet1.Columns((i * 3 - 2) + 6).Hidden = False
Sheet1.Columns((i * 3 - 2) + 7).Hidden = False

Else
Sheet1.Columns((i * 3 - 2) + 5).Hidden = True
Sheet1.Columns((i * 3 - 2) + 6).Hidden = True
Sheet1.Columns((i * 3 - 2) + 7).Hidden = True
End If
Next
End If
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Nếu dùng code của Sealand thì đâu xem được từng ngày. Em gửi kèm theo file chi tiết đây. Mong các cao thủ giúp em.
 

File đính kèm

Bạn thay đổi cấu trúc bảng thì sao File chạy được.
Nay mình chỉnh theo bảng mới của bạn và sửa Code gọn gàng lại. Bạn tham khảo nhé.

PHP:
Option Explicit
Sub loc()
Dim i, ngay As Integer
ngay = InputBox("Nhap ngay can xem: 1, 2, 3...:")
Application.ScreenUpdating = False
For i = 1 To 31
If Sheet1.Cells(1, (i * 4 - 3) + 3) = ngay Then
Sheet1.Columns((i * 4 - 3) + 3).Resize(, 4).Hidden = False
Else
Sheet1.Columns((i * 4 - 3) + 3).Resize(, 4).Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Lưu ý: Dòng tiêu đề ngày chỉ nhập số 1;2;3....và Format 0"-Jan". Ở đây mình không dùng trực tiếp ngày để tránh sai sót. Nhấn Ctrl+m để lọc
 

File đính kèm

Bạn xem thêm trong file kèm theo

PHP:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [c1]) Is Nothing Then
   If Target.Value = "" Then
      Cells.EntireColumn.Hidden = False
      Exit Sub
   End If
 
   Dim Rng As Range, sRng As Range, Clls As Range
   Dim dFormat As String
   
   dFormat = [D2].NumberFormat
   Set Rng = Range([D2], [iV2].End(xlToLeft))
   Rng.NumberFormat = "m/d/yyyy"
'   MsgBox [c1].NumberFormat   '
   Set sRng = Rng.Find(Format([c1].Value, "m/d/yyyy"), , , xlWhole)
   If Not sRng Is Nothing Then
      Columns("D:DG").Hidden = True
      sRng.Resize(, 4).EntireColumn.Hidden = False
   Else
      MsgBox "Nothing"
   End If
   Rng.NumberFormat = dFormat
 End If
End Sub
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Nếu chỉ tra số liệu thì hoàn toàn có thể dùng công thức mà không cần đến VBA
 

File đính kèm

Cám ơn mọi người rất nhiều nhé. Sau này còn vấn đề nào vướng mắc về excel em sẽ tiếp tục thỉnh giáo các sư phụ trên diễn đàn.
 
Web KT

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

Back
Top Bottom