hoangminhtien
Thành viên gắn bó



- Tham gia
- 29/2/08
- Bài viết
- 1,685
- Được thích
- 2,227
- Nghề nghiệp
- Mechanical Engineering
Mình dùng hàm tự tạo đi henEm có danh sách trong 1 bảng, em muốn lọc lấy dữ liệu duy nhất trong bảng này vào 1 cột. ví dụ cụ thể em đã đề cập trong file, nhờ các anh chị em giúp.
Chân thành cảm ơn
Em có danh sách trong 1 bảng, em muốn lọc lấy dữ liệu duy nhất trong bảng này vào 1 cột. ví dụ cụ thể em đã đề cập trong file, nhờ các anh chị em giúp.
Chân thành cảm ơn
Sub LocDuyNhat_Bang()
On Error Resume Next
Range([l9], [l65000]).ClearContents
Set Dic = CreateObject("Scripting.Dictionary")
For Each cls In Range([d5], [i50]).SpecialCells(2)
If Not IsEmpty(cls) Then
Dic.Add cls.Value, ""
End If
Next
[l9].Resize(Dic.Count) = Application.Transpose(Dic.keys)
[l9].Resize(Dic.Count).Sort [l9], 1
End Sub
Chào anh!File của bạn đây
Mã:Sub LocDuyNhat_Bang() On Error Resume Next Range([l9], [l65000]).ClearContents Set Dic = CreateObject("Scripting.Dictionary") For Each cls In Range([d5], [i50]).SpecialCells(2) If Not IsEmpty(cls) Then Dic.Add cls.Value, "" End If Next [l9].Resize(Dic.Count) = Application.Transpose(Dic.keys) [l9].Resize(Dic.Count).Sort [l9], 1 End Sub
Public Function UniqueList(ByVal rng As Range, Id As Long)
Dim sArr, Arr(), item, dic, i
If rng.Count = 1 Then UniqueList = rng.Value: Exit Function
Set dic = CreateObject("Scripting.Dictionary")
sArr = rng.Value
For Each item In sArr
If Not IsEmpty(item) And Not dic.exists(item) Then
i = i + 1
If i = Id Then
UniqueList = item
Exit Function
Else
dic.Add item, ""
End If: End If
Next item
UniqueList = ""
End Function
Nếu dùng cột phụ song song với cột kết quả có được không? (Tức là cột phụ có số ròng tương đương cột chính)Cám ơn tất cả các bác. Tuy nhiên có thể dùng công thức cho trường hợp này được không? nhờ các bác giúp đỡ.
Hoàn toàn được bác ạ, nhờ bác hướng dẫn.Nếu dùng cột phụ song song với cột kết quả có được không? (Tức là cột phụ có số ròng tương đương cột chính)
Bạn xem thử file này.Hoàn toàn được bác ạ, nhờ bác hướng dẫn.
Mình mở file lên thấy chỉ có chữ "A" không mà bạn. Mình theo yêu cầu của bạn Hoangminhtien thì bài 2 đã có đáp áp rồi thì phải dùng cột phụ sao đó dùng công thứ lộc duy nhất ra là được. Nếu không dùng cột phụ thì làm sao để được kết quả theo yêu cầu của bạn Tiến??? Cái đó mới rắc rốiBạn xem thử file này.
giả thiết là mảng có số ròng và cột là 2 chữ số nhé
không hiểu !!!!Mình mở file lên thấy chỉ có chữ "A" không mà bạn. Mình theo yêu cầu của bạn Hoangminhtien thì bài 2 đã có đáp áp rồi thì phải dùng cột phụ sao đó dùng công thứ lộc duy nhất ra là được. Nếu không dùng cột phụ thì làm sao để được kết quả theo yêu cầu của bạn Tiến??? Cái đó mới rắc rối
Sao Ex 2003 của mình vẫn bình thường mà!EXCEL 2003 trên máy tôi thì nó hiện như vầy:
Đây là cách sắp xếp duy nhất từ bảng không dùng cột phụ.Mình mở file lên thấy chỉ có chữ "A" không mà bạn. Mình theo yêu cầu của bạn Hoangminhtien thì bài 2 đã có đáp áp rồi thì phải dùng cột phụ sao đó dùng công thứ lộc duy nhất ra là được. Nếu không dùng cột phụ thì làm sao để được kết quả theo yêu cầu của bạn Tiến??? Cái đó mới rắc rối
Mình không biết máy mình có bị gì không nhưng mở lên vẫn vậy toàn chữ "A" không hà lạ thiệt đóĐây là cách sắp xếp duy nhất từ bảng không dùng cột phụ.
Excel 2007 trở lên mới coi được thui.
Win XP và Office 2007 của mình đều là công ty mua bản quyền và update thường xuyên, chắc không có gì đặc biệt.Mình không biết máy mình có bị gì không nhưng mở lên vẫn vậy toàn chữ "A" không hà lạ thiệt đó
Vụ này gặp hoài, cũng chẳng biết tại sao nhưng chắc chắn rằng trường hợp này thường xãy ra đối với những công thức quá phức tạpMình không biết máy mình có bị gì không nhưng mở lên vẫn vậy toàn chữ "A" không hà lạ thiệt đó
Anh xem lại file này, Công thức đâu có quá phức tạp đâu.Vụ này gặp hoài, cũng chẳng biết tại sao nhưng chắc chắn rằng trường hợp này thường xãy ra đối với những công thức quá phức tạp
NHưng excel 2003 của mình không dùng được công thức này,nhưng mà tại sao chớ ?Sao Ex 2003 của mình vẫn bình thường mà!
Cũng lạ thật file này thì OK, còn file trên thì bị lỗi, thanks bạn nhen, công thức thật khủngAnh xem lại file này, Công thức đâu có quá phức tạp đâu.
(đã rút gọn hết khả năng)
Cái đó không đoán trước được! Nói chung là những công thức mảng như bạn vừa làm luôn có những lỗi kỳ lạ (người xem được còn người ta thì lại không)Anh xem lại file này, Công thức đâu có quá phức tạp đâu.
(đã rút gọn hết khả năng)
Anh ơi!Cái đó không đoán trước được! Nói chung là những công thức mảng như bạn vừa làm luôn có những lỗi kỳ lạ (người xem được còn người ta thì lại không)
Tôi dùng Office 2010, đương nhiên xem được kết quả bình thường rồi
------------------
Ẹc... Ẹc... Bài này mà làm cho dữ liệu 1000 dòng chắc phải đi tò le quá
Mới mở file ra thì thấy kết quả ok, nhưng lật đi lật lại qua màn hình khác qoay lại trở về thì ra kết quả toàn chử "A" không à công thức thì vẩn thế nàyAnh xem lại file này, Công thức đâu có quá phức tạp đâu.
(đã rút gọn hết khả năng)
=IF(OR(H2="";ISERROR(INDEX(DS;--LEFT(RIGHT(rg;4);2);--RIGHT(rg;2))));"";INDEX(DS;--LEFT(RIGHT(rg;4);2);--RIGHT(rg;2)))
=INDEX(DS;--LEFT(RIGHT(rg;4);2);--RIGHT(rg;2))
File của bạn đây
Mã:Sub LocDuyNhat_Bang() On Error Resume Next Range([l9], [l65000]).ClearContents Set Dic = CreateObject("Scripting.Dictionary") For Each cls In Range([d5], [i50]).SpecialCells(2) If Not IsEmpty(cls) Then Dic.Add cls.Value, "" End If Next [l9].Resize(Dic.Count) = Application.Transpose(Dic.keys) [l9].Resize(Dic.Count).Sort [l9], 1 End Sub
Tôi thắc mắc là khi bỏ .Transpose thì kết quả của nó là a, a, a, a nhỉ? Rất mong bác nào biết về hàm Transpose này trong VBA xin chỉ bảo giúp tôi với.
Chào các bạn!Mình thấy Hàm UDF của nmHung49 cũng có thể viết thành:
Mã:Public Function UniqueList(ByVal rng As Range, Id As Long) Dim sArr, Arr(), item, dic, i If rng.Count = 1 Then UniqueList = rng.Value: Exit Function Set dic = CreateObject("Scripting.Dictionary") sArr = rng.Value For Each item In sArr If Not IsEmpty(item) And Not dic.exists(item) Then i = i + 1 If i = Id Then UniqueList = item Exit Function Else dic.Add item, "" End If: End If Next item UniqueList = "" End Function
Khi lấy DS ta nhập công thức rồi chép xuống thoải mái:
=uniquelist($D$5:$I$17,ROW(1:1))
Như vậy, đỡ phải xác định độ dài mảng tránh lỗi trong DS. Mình chỉ mượn dic tìm đến Item mình cần là "biến".