Lọc danh sách có điều kiện (1 người xem)

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

baquang1984

Thành viên tiêu biểu
Tham gia
3/6/10
Bài viết
429
Được thích
44
Nghề nghiệp
Kỹ sư Lâm nghiệp
Em có chương trình muốn lọc danh sách các chủ quản lý để được cấp GCN dựa vào cột "Ma" ở Sheets"DATA", kết quả được thể hiện tại Sheets"KETQUA" có 4 cột như File đính kèm .
- Yêu cầu của chương trình là chỉ lọc những chủ quản lý có mã là 1 còn các mã khác bỏ qua
Cảm ơn mọi người giúp đỡ!
 

File đính kèm

Lần chỉnh sửa cuối:
Em có chương trình muốn lọc danh sách các chủ quản lý để được cấp GCN dựa vào cột "Ma" ở Sheets"DATA", kết quả được thể hiện tại Sheets"KETQUA" có 4 cột như File đính kèm .
- Yêu cầu của chương trình là chỉ lọc những chủ quản lý có mã là 1 còn các mã khác bỏ qua
Cảm ơn mọi người giúp đỡ!
Có Sub trong file rồi, chỉnh lại một chút thôi mà, không nói rõ là có bỏ trùng cột nào không nữa.
[GPECODE=vb]
Public Sub Loc_DS()
Dim I As Long, K As Long, sArr(), dArr()
With Sheets("DATA")
sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 35).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
If sArr(I, 32) = 1 Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
dArr(K, 3) = sArr(I, 2)
dArr(K, 4) = sArr(I, 32)
End If
Next I
With Sheets("KETQUA")
.[A2:D60000].ClearContents
If K Then .[A2].Resize(K, 4).Value = dArr
End With
End Sub
[/GPECODE]
 
Upvote 0
Em có chương trình muốn lọc danh sách các chủ quản lý để được cấp GCN dựa vào cột "Ma" ở Sheets"DATA", kết quả được thể hiện tại Sheets"KETQUA" có 4 cột như File đính kèm .
- Yêu cầu của chương trình là chỉ lọc những chủ quản lý có mã là 1 còn các mã khác bỏ qua
Cảm ơn mọi người giúp đỡ!

Kiểm tra thử File:

Dùng Validation chọn tại A2 của sheet KETQUA để lọc mã đối tượng.

 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Có Sub trong file rồi, chỉnh lại một chút thôi mà, không nói rõ là có bỏ trùng cột nào không nữa.
[GPECODE=vb]
Public Sub Loc_DS()
Dim I As Long, K As Long, sArr(), dArr()
With Sheets("DATA")
sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 35).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
If sArr(I, 32) = 1 Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
dArr(K, 3) = sArr(I, 2)
dArr(K, 4) = sArr(I, 32)
End If
Next I
With Sheets("KETQUA")
.[A2:D60000].ClearContents
If K Then .[A2].Resize(K, 4).Value = dArr
End With
End Sub
[/GPECODE]
Em cảm ơn anh Ba Tê đối với bài này em chỉ cần lọc danh sách các hộ co mã = 1 thôi và lọc hết.
 
Upvote 0
Có Sub trong file rồi, chỉnh lại một chút thôi mà, không nói rõ là có bỏ trùng cột nào không nữa.
Cho em hỏi về lọc dữ liệu có nhiều điều kiện
- Khi em chọn thôn cần lọc dữ liệu ở Combo Box thì dữ liệu được lọc sang Sheets"KETQUA" theo 4 cột như file đính kèm
- Dữ liệu được lọc sang Sheets"KETQUA" là các chủ quản lý có Ma = 1
Thanks all
 

File đính kèm

Upvote 0
Cho em hỏi về lọc dữ liệu có nhiều điều kiện
- Khi em chọn thôn cần lọc dữ liệu ở Combo Box thì dữ liệu được lọc sang Sheets"KETQUA" theo 4 cột như file đính kèm
- Dữ liệu được lọc sang Sheets"KETQUA" là các chủ quản lý có Ma = 1
Thanks all
Sửa lại code một chút nữa.
[GPECODE=vb]
Public Sub Loc_Thon()
Dim I As Long, K As Long, sArr(), dArr(), DK, Ma As Long
With Sheets("DATA")
sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 32).Value2
End With
With Sheets("KETQUA")
DK = UCase(.[F2])
Ma = .[G2].Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
If sArr(I, 32) = Ma And DK <> "" Then
If UCase(sArr(I, 4)) = DK Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
dArr(K, 3) = sArr(I, 2)
dArr(K, 4) = sArr(I, 32)
End If
End If
Next I
With Sheets("KETQUA")
.[A2:D10000].ClearContents
If K Then .[A2].Resize(K, 4) = dArr
End With
End Sub
[/GPECODE]
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Anh Ba Tê có thể giúp em là vẫn để nguyên Combo Box được không ạ và không cần dùng Validation bởi vì khi em chọn trongCombo Box cho dễ nhìn anh ạ
Cảm ơn anh!
Có Sub đó bạn muốn áp dụng vào đâu cho nó chạy là tùy bạn.
Combo Box dễ nhìn hơn Validation? Cái Drop Down của bạn thì khác gì Validation?
Gắn cái ghế của phi công trên xe đạp ngồi chắc là "dễ nhìn" hơn rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Có Sub đó bạn muốn áp dụng vào đâu cho nó chạy là tùy bạn.
Combo Box dễ nhìn hơn Validation? Cái Drop Down của bạn thì khác gì Validation?
Gắn cái ghế của phi công trên xe đạp ngồi chắc là "dễ nhìn" hơn rồi.
Em cảm ơn anh nhiều nhé!
 
Upvote 0
Sửa lại code một chút nữa.
[GPECODE=vb]
Public Sub Loc_Thon()
Dim I As Long, K As Long, sArr(), dArr(), DK, Ma As Long
With Sheets("DATA")
sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 32).Value2
End With
With Sheets("KETQUA")
DK = UCase(.[F2])
Ma = .[G2].Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
If sArr(I, 32) = Ma And DK <> "" Then
If UCase(sArr(I, 4)) = DK Then
K = K + 1
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
dArr(K, 3) = sArr(I, 2)
dArr(K, 4) = sArr(I, 32)
End If
End If
Next I
With Sheets("KETQUA")
.[A2:D10000].ClearContents
If K Then .[A2].Resize(K, 4) = dArr
End With
End Sub
[/GPECODE]
Anh Ba Tê và mọi người cho em hỏi chút được không ạ đối với đoạn Code VBA của anh ở trên là thực hiện lọc danh sách có điều kiện
Điều kiện 1 Lọc các chủ quản lý có mã là 1
Điều kiện 2 là lọc theo địa chỉ "Thôn"
tuy nhiên khi thực hiện code này thì lọc toàn bộ số chủ quản lý hiện có thỏa mãn 2 điều kiện trên.
Giờ em muốn nhờ anh và mọi người giúp em là lọc các chủ quản lý thỏa mãn 2 điều kiện trên và lọc duy nhất một chủ quản lý có trong dữ liệu
VD Thôn Rõng có 3 ông Nguyễn Văn 3 chi lọc lấy 1 ông Nguyễn Văn 3 thôi ạ
Em cảm ơn anh và mọi người!
 

File đính kèm

Upvote 0
Anh Ba Tê và mọi người cho em hỏi chút được không ạ đối với đoạn Code VBA của anh ở trên là thực hiện lọc danh sách có điều kiện
Điều kiện 1 Lọc các chủ quản lý có mã là 1
Điều kiện 2 là lọc theo địa chỉ "Thôn"
tuy nhiên khi thực hiện code này thì lọc toàn bộ số chủ quản lý hiện có thỏa mãn 2 điều kiện trên.
Giờ em muốn nhờ anh và mọi người giúp em là lọc các chủ quản lý thỏa mãn 2 điều kiện trên và lọc duy nhất một chủ quản lý có trong dữ liệu
VD Thôn Rõng có 3 ông Nguyễn Văn 3 chi lọc lấy 1 ông Nguyễn Văn 3 thôi ạ
Em cảm ơn anh và mọi người!
Thay cái Loc_Thon cũ bằng cái này
[GPECODE=vb]Public Sub Loc_Thon()
Dim Dic As Object, I As Long, K As Long, sArr(), dArr(), DK, Ma As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("DATA")
sArr = .Range(.[A2], .[A65536].End(xlUp)).Resize(, 32).Value2
End With
With Sheets("KETQUA")
DK = UCase(.[F2])
Ma = .[G2].Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
If sArr(I, 32) = Ma And DK <> "" Then
If UCase(sArr(I, 4)) = DK Then
Tem = sArr(I, 2)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, Empty
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 1)
dArr(K, 3) = Tem
dArr(K, 4) = sArr(I, 32)
End If
End If
End If
Next I
With Sheets("KETQUA")
.[A2:D10000].ClearContents
If K Then .[A2].Resize(K, 4).Value2 = dArr
End With
Set Dic = Nothing
End Sub[/GPECODE]
Sao không theo số CMND mà lại theo tên nhỉ, lỡ nhập tên khác nhau chữ Hoa thường, hoặc dấu cách thôi là tèo.
Đừng bảo dự trù hết các tình huống viết sai nhé.
Nếu muốn lấy duy nhất theo số CMND thì sửa các dòng này:
[GPECODE=vb]Tem = sArr(I, 1) '<--------- Theo CMND sửa từ đây
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, Empty
dArr(K, 1) = K
dArr(K, 2) = Tem
dArr(K, 3) = sArr(I, 2) '<----------Đến đây[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Thay cái Loc_Thon cũ bằng cái này

Sao không theo số CMND mà lại theo tên nhỉ, lỡ nhập tên khác nhau chữ Hoa thường, hoặc dấu cách thôi là tèo.
Đừng bảo dự trù hết các tình huống viết sai nhé.
Nếu muốn lấy duy nhất theo số CMND thì sửa các dòng này:
Em cảm ơn anh Ba Tê bác thật tuyệt lường trước hết mọi sự việc. Chúc anh và gia đình sức khỏe!
 
Upvote 0

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

Back
Top Bottom