duchuynh103
Thành viên thường trực




- Tham gia
- 25/9/07
- Bài viết
- 209
- Được thích
- 146
Mình đã loay hoay mãi mà không tìm được ph.án lập danh sách từ một list (có dữ liệu trùng) bằng define name để chỉ dùng một công thức ở "DSach". Nhờ các bạn giúp mình với
Nếu đã dùng MATCH(REPT("z",255) thì nên kết hợp với INDIRECT chứ không nên kết hợp với OFFSET... Trong trường hợp này có thể đơn giãn hóa vấn đề bằng COUNTA($B:$B)ten =OFFSET(Sheet2!$B$2,,,MATCH(REPT("z",255),Sheet2!$B:$B)-1,1)
Trong trường hợp dử liệu không bắt đầu từ dòng 2 thì sao?stt =IF(MATCH(ten,ten,0)=ROW(ten)-1,ROW(ten)-1,"")
Nên dùng ROWS($1:1) chứ không nên ROW(1:1) ... Tại sao? Vì hàm ROW bản chất là hàm mãng, khác với ROWS, trả về giá trị là 1 số duy nhất (còn ROW trả về giá trị mà 1 mãng nhiều phần tử)... Trong những bài toán cụ thể nào đó bạn sẽ thấy nó dẩn đến sai sót đáng tiếc (mà không hiểu nguyên nhân từ đâu)=IF(ROW(1:1)>COUNT(stt),"",INDEX(ten,SMALL(stt,ROW(1:1))))
------------------------
File của boyxin, về công thức đã giãi quyết được phần dử liệu có cell rổng... Còn VBA thì chưa nha!
Sort là giãi pháp hửu hiệu nhất rồi... Những lở tác giã không thích thay đổi dử liệu thì bạn làm sao (cái này đã từng tranh luận nhiều lần rồi, bạn nhớ chứ)Hiiiiiiiii
Làm biếng, thêm sort DS là hết bệnh liền
---------------------------------------
Có tham số nào thêm vào để loại bỏ luôn cell rỗng khi AF không?
Sort là giãi pháp hửu hiệu nhất rồi... Những lở tác giã không thích thay đổi dử liệu thì bạn làm sao (cái này đã từng tranh luận nhiều lần rồi, bạn nhớ chứ)
Trong Advanced Filter không có chức năng bỏ qua cell rổng đâu (khỏi cần tìm)
Có phải ý bạn là thế này không? (có 2 giải pháp Formula and VBA)
Tìm bâý lâu nay cuôí cùng củng gập chủ nhân của bài toán này .em nhờ BOYZIN giúp em bài toán tương tự như File của anh .
vd:em có những mả hàng như sau .25050020,25050030,25050040,25060050,25060020,25060030,25060040,35050020,35050030...
Những mã hàng trên dược chia thành ba phần ,hai ký tự đâù ,ba ký tự ở giưã ,ba ký tự cuôí .(tính từ trái sang ).anh dùng công thức nào mà khi em chọn hai ký tự đầu là 25 thì tất cả những mả có hai ký tự đâù là 25 thì lọc ra hết .Tương tự như vậy khi em chọn 3 ký tự ở giửa là 050 thì tất cả những mã có chưá ba ký tự ở giưã là 050 đều lọc ra.tương tự như vâỵ vơí ba ký tự sao cùng .
Thanks.
Em ko biết cách upload bài lên mong Boyzin thông cảm .
Nhờ mọi ngươì giúp đở .Thanks.
Trong Advanced Filter không có chức năng bỏ qua cell rổng đâu (khỏi cần tìm)
Tìm bâý lâu nay cuôí cùng củng gập chủ nhân của bài toán này .em nhờ BOYZIN giúp em bài toán tương tự như File của anh .
vd:em có những mả hàng như sau .25050020,25050030,25050040,25060050,25060020,25060030,25060040,35050020,35050030...
Những mã hàng trên dược chia thành ba phần ,hai ký tự đâù ,ba ký tự ở giưã ,ba ký tự cuôí .(tính từ trái sang ).anh dùng công thức nào mà khi em chọn hai ký tự đầu là 25 thì tất cả những mả có hai ký tự đâù là 25 thì lọc ra hết .Tương tự như vậy khi em chọn 3 ký tự ở giửa là 050 thì tất cả những mã có chưá ba ký tự ở giưã là 050 đều lọc ra.tương tự như vâỵ vơí ba ký tự sao cùng .
Thanks.
Em ko biết cách upload bài lên mong Boyzin thông cảm .
Nhờ mọi ngươì giúp đở .Thanks.
Anh xem lại dùm em lần nữa nhe ,em có ghi câu hỏi trong đó rồi .
Nó củng như bài trước em hỏi thôi ,nhưng mã hàng nó dài hơn .nó chia làm 7 phần khác nhau . ( chứ không như 3 phần bài trước nữa ).
Cái này dể lắm, chỉ dùng hàm xử lý chuổi là ra!Tôi muốn lấy số liệu trước dấu "-" và bỏ luôn ký tự trắng như ví dụ dưới đây thì làm cách nào các huynh:
ví dụ: Dãy ký tự ABC NBG - TH thì lấy thành --->> ABCNBG.
Với cell A1 là nơi chứa chuổi gốc=SUBSTITUTE(LEFT(SUBSTITUTE(A1,"-",REPT(" ",255)),255)," ","")
Cụ thể bạn muốn lọc như thế nào thì phải nói rõ chứ! LỌC thì ai cũng hiểu nhưng chưa rõ sẽ lọc ra cái gì:Có công thức nào lọc đơn giản hơn không. Vì mình lọc tên vật tư, mà vật tư thì rất nhiều, hic mình luôn phải lọc thủ công nên rất lâu.Mong các bạn giúp đỡ. Thanks!
Không hiểu dữ liệu như thế nào nên câu trả lời sau chưa chắc đúng: Bạn có thể chọn AutoFilter\ (Custom...)\ contains (1 đoạn tên vật tư mà bạn cần)Hi sorry! vì mình chưa diễn đạt cụ thể. Lọc vật tư từ dự toán công trình.Có cách nào giúp với!
Sub autoFilt()
' Dung gia tri cua su chon hien thoi lam dieu kien loc tu dong
' co the chon 1 hoac 2 o, voi 2 o: neu khac cot thi loc theo nghia "and", cu`ng cot thi theo nghia "or"
' co the chon gia tri ben trong vu`ng loc hoac ngay tren, ngay duoi (voi khoang cach toi da la 5 do`ng, toi thieu 1 do`ng)
Dim s As Worksheet
Dim r As Range
Dim c As Range, c1 As Range, c2 As Range
Dim cri As Variant, cri1 As Variant, cri2 As Variant, fie1, fie2
Set s = ActiveSheet
Set c = Application.Selection 'ActiveCell
Set c1 = c.Cells(1, 1)
Set c2 = c1
cri1 = [c1]
cri2 = cri1
If c.Areas.Count = 1 Then
If c.Rows.Count > 1 Then
Set c2 = c.Cells(2, 1)
cri2 = [c2]
ElseIf c.Columns.Count > 1 Then
Set c2 = c.Cells(1, 2)
cri2 = [c2]
Else
cri2 = ""
End If
ElseIf c.Areas.Count > 1 Then
Set c2 = c.Areas(2).Cells(1, 1)
cri2 = [c2]
End If
s.AutoFilterMode = False
On Error Resume Next
Set r = s.Range(s.Name)
' Neu tren Sheet da co mot vung dat trung ten voi ten sheet thi dung vung nay,
' neu chua co, thi se tu dong tim.
If Err.Number <> 0 Then Set r = c.CurrentRegion ' Gia tri loc nam trong vung can loc
If r.Cells.Count < 3 Then '.Rows.Count = 1 Then ' Gia tri loc nam ngoai vung can loc
If Len(r.Offset(5, 0).Cells(1, 1)) < 1 Then
Set r = r.Offset(-5, 0).CurrentRegion ' dich xuong 5 dong de xac dinh vung can loc
Else
Set r = r.Offset(5, 0).CurrentRegion ' dich len 5 dong de xac dinh vung can loc
End If
End If
If cri1 = "" Then
r.AutoFilter
Else
fie1 = c1.Column + 1 - r.Column ' tinh toan vi tri cua cot se loc
fie2 = c2.Column + 1 - r.Column ' tinh toan vi tri cua cot se loc
' neu gia tri la so hoac bieu thuc so sanh thi khong noi them dau *
If ((Not IsNumeric(cri1)) And (Left(cri1, 1) Like "[!<>=?]")) Then cri1 = cri1 & "*"
If ((Not IsNumeric(cri2)) And (Left(cri2, 1) Like "[!<>=?]")) Then cri2 = cri2 & "*"
If c1.Column = c2.Column Then
r.AutoFilter Field:=fie1, Criteria1:=cri1, Operator:=xlOr, Criteria2:=cri2
Else
r.AutoFilter Field:=fie1, Criteria1:=cri1
r.AutoFilter Field:=fie2, Criteria1:=cri2
End If
End If
Set s = Nothing
Set r = Nothing
Set c = Nothing
Set c1 = Nothing
Set c2 = Nothing
End Sub