[Nhờ giúp đỡ] VBA - Lọc và tạo List (1 người xem)

  • Thread starter Thread starter M@trixs
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

M@trixs

Thành viên thường trực
Tham gia
3/3/11
Bài viết
257
Được thích
336
Nhờ ACE nào đi ngang xem, giúp giùm mình với:

- Mình muốn tạo List cho ô D1 từ dữ liệu đã được lọc ra (Không trùng) của dòng thứ 4 : Từ Giai Đoạn 1 đến Giai Đoạn xxx
- List có nội dung như sau (quan trọng là có thêm nội dung "Tất cả" ở cuối List):

Giai Đoạn 1
Giai Đoạn 2
Giai Đoạn 3
Giai Đoạn xxx
Tất cả
- Nếu ACE nào dùng cột phụ thì có thể dử dụng cột A giùm mình nhé !

XIN CẢM ƠN RẤT NHIỀU !!!
 

File đính kèm

Bạn chạy code sau:

Mã:
Option Explicit
Sub GPE()
Dim Arr, dArr, I&, K&, Dk As String, Tc As String
Dim Dic As Object, Tem As String
Dk = "Giai " & ChrW(272) & "o" & ChrW(7841) & "n"
Tc = "T" & ChrW(7845) & "t c" & ChrW(7843)
Arr = [G4:PF4].Value
ReDim dArr(1 To UBound(Arr, 2), 1 To 1)
Set Dic = CreateObject("Scripting.Dictionary")
For I = 1 To UBound(Arr, 2)
    If Arr(1, I) Like Dk & "*" Then
    Tem = Arr(1, I)
        If Not Dic.Exists(Tem) Then
            K = K + 1
            Dic.Add Tem, K
            dArr(K, 1) = Arr(1, I)
        End If
    End If
Next I
    dArr(K + 1, 1) = Tc
    [A7:A1000].ClearContents
    If K Then [A7].Resize(K + 1).Value = dArr
    Sheet1.Names.Add "LIST", Range([A7], [A7].End(4))
    Range("D1").Validation.Delete
    Range("D1").Validation.Add 3, , , "=LIST"
End Sub
Hình như đã có lần chúng ta làm vụ add thẳng list vô Validation rồi mà, sao giờ lại phải add name. Làm lại để ôn bài cũ đi đồng chí.
 
Rất tuyệt bạn ạ. Nhưng khi mình Copy - Past thêm một giai đoạn nữa thì code không chạy, hình như mình có nhớ mang máng đâu đó có lần mình đọc được thì phải dùng cái này: "Private Sub Worksheet_Change(ByVal Target As Range)" nhưng mình không biết áp dụng, bạn xem lại giúp mình với nhé !
 
Rất tuyệt bạn ạ. Nhưng khi mình Copy - Past thêm một giai đoạn nữa thì code không chạy, hình như mình có nhớ mang máng đâu đó có lần mình đọc được thì phải dùng cái này: "Private Sub Worksheet_Change(ByVal Target As Range)" nhưng mình không biết áp dụng, bạn xem lại giúp mình với nhé !
Khi bạn thêm dữ liệu thì bạn phải cho chạy code lại mới được chứ, nếu dữ liệu của bản có số cột lớn hơn PF4 thì bạn phải sửa code
Mã:
[COLOR=#000000][I]Arr = [G4:PF4].Value[/I][/COLOR]
thành ô cuối cùng của dòng 4 tương ứng.
 
Minh thì không biết VBA nên nếu được thì bạn làm cho nó tự động giùm mình được không ?

Xin cảm ơn !
 
Khi bạn thêm dữ liệu thì bạn phải cho chạy code lại mới được chứ, nếu dữ liệu của bản có số cột lớn hơn PF4 thì bạn phải sửa code
Mã:
[COLOR=#000000][I]Arr = [G4:PF4].Value[/I][/COLOR]
thành ô cuối cùng của dòng 4 tương ứng.

Mình đã sửa nó lại thành cột cuối: "XFD" luôn rồi, vì sợ sau này có ai đó không biết thì tưởng bị lỗi, không dùng file này nữa thì uổng phí.
 
Mong Anh Chị Em nào đó đ i ngang giúp giùm một tay cho nó "Tự động".
Xin cảm ơn !
 

File đính kèm

Lần chỉnh sửa cuối:
Xin cảm ơn bạn @GiaiPhap và @Chuot0106 nhiều. Sẵn đây các bạn giúp mình một tí nữa được không, mình muốn khi chọn Giai đoạn nào thì nó sẽ chỉ hiện giai đoạn đó, còn chọn Tất Cả thì sẽ hiện tất cả lên. Mong bạn giúp mình !

Nội dung của nhóm cột cần thao tác (Ẩn/Hiện) chạy từ cột số: 5 (Lũy kế đến hết kỳ trước) đến cột số 11 (Đạt tỷ lệ)

Xin cảm ơn !
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom