Dữ liệu ít thì dùng file này cho đơn giản, bạn có thể SORT lại cột tên vật tư theo ABC sau khi có kết quả lọc.Chào GPX !
Mình muốn tổng hợp lại tên vật tư trong sheet tổng hợp từ sheet data nhưng vấn đề là tên vật tư ở sheet date bị trùng lặp. Mong các bạn giúp mình giải quyết vấn đề này.

chào gpx !
Mình muốn tổng hợp lại tên vật tư trong sheet tổng hợp từ sheet data nhưng vấn đề là tên vật tư ở sheet date bị trùng lặp. Mong các bạn giúp mình giải quyết vấn đề này.
=iferror(index(data!$a$2:$a$104,match(0,countif($b$2:b2,data!$a$2:$a$104),0),0),"")



Cho mình hỏi nếu dữ liệu mà nhiều ấy, file hông đơn giản thì sẽ làm như thế nào vậy nhỉ?Dữ liệu ít thì dùng file này cho đơn giản, bạn có thể SORT lại cột tên vật tư theo ABC sau khi có kết quả lọc.
Cho mình hỏi nếu dữ liệu mà nhiều ấy, file hông đơn giản thì sẽ làm như thế nào vậy nhỉ?



Thế hoamattroicoi có thể chiến 1 phát cho mình học với, được hông nhỉ?Dùng Dictionary Object mà chiến thôi. hehehehe.
xin bạn chỉ giúp để mình học tập nha hoamattroicoi xinh đẹp . hi hiDùng Dictionary Object mà chiến thôi. hehehehe.
Chào GPX !
Mình muốn tổng hợp lại tên vật tư trong sheet tổng hợp từ sheet data nhưng vấn đề là tên vật tư ở sheet date bị trùng lặp. Mong các bạn giúp mình giải quyết vấn đề này.
Lại trễ đòThế hoamattroicoi có thể chiến 1 phát cho mình học với, được hông nhỉ?
Sub LockTrung()Dim i As Long, k As Long
Dim Dic As Object
Dim sArr(), dArr()
Set Dic = CreateObject("Scripting.dictionary")
sArr = Sheet1.Range("A2:D" & Sheet1.[D65536].End(xlUp).Row).Value
ReDim dArr(1 To UBound(sArr), 1 To 3)
For i = 1 To UBound(sArr)
If sArr(i, 1) <> "" Then
If Not Dic.exists(sArr(i, 1)) Then
k = k + 1
Dic.Add sArr(i, 1), k
dArr(k, 1) = sArr(i, 1)
dArr(k, 2) = sArr(i, 2)
dArr(k, 3) = sArr(i, 4)
Else
dArr(Dic.Item(sArr(i, 1)), 3) = dArr(Dic.Item(sArr(i, 1)), 3) + sArr(i, 4)
End If
End If
Next
If k Then
Sheet2.[B3:D1000].ClearContents
Sheet2.[B3].Resize(k, 3) = dArr
Sheet2.Range("B3:D1000").Sort [B2], 1
End If
Set Dic = Nothing
End Sub



Trễ cũng hông có sao đâu, miễn đừng nhầm đò là được ( dễ bị chìm). Cơ mà cho hỏi thêm là Sort bằng DIC luôn được hông ta.Lại trễ đò![]()
![]()
:
Mã:Sheet2.Range("B3:D1000").Sort [B2], 1
Bate cho mình hỏi nêu dữ liệu ở file data không cố định ( tên vật tư có thể 100, 200, 4 , 1000 ...) thì có dùng được file của bate không?
cảm ơn bate đã nhắc nhở.
Thực ra sort bằng DIC thì mình chưa có nghe, hỏng biết chơi được không nhưng sẽ tìm hiểu xem sao - chắc là có bạn mới nói??? Nhưng Sort Array 2 chiều thì có nghe rồi và thấy các sư phụ cũng viết code rồi nhưng nhìn đống code ấy mình muốn Ẹ luôn á. Thời gian tìm hiểu mấy cái code đó thui để dành thời gian tìm bạn zai cho nó nhanh à,Trễ cũng hông có sao đâu, miễn đừng nhầm đò là được ( dễ bị chìm). Cơ mà cho hỏi thêm là Sort bằng DIC luôn được hông ta.
Cách làm của bác hay quá.Lọc không trùng, Sort dữ liệu,... dùng công thức chắc "tẻo tèo teo".
Dùng PivotTable, VBA... thôi.
Bấm vào cái hình cho "chú tiểu" gõ 1 phát là xong.
Đùa Ba Tê chútNếu có "rảnh" thì nhập đúng tên Ba Tê giùm nhé. Bate hổng biết là nick nào.
. Tự mò mẫn excel thì nên mò những gì vậy? Ba Tê cho mình một vài lời khuyên đi.Đùa Ba Tê chút. Tự mò mẫn excel thì nên mò những gì vậy? Ba Tê cho mình một vài lời khuyên đi.
bạn hoamattroicoi đã ngỏ ý rồiTrễ cũng hông có sao đâu, miễn đừng nhầm đò là được ( dễ bị chìm). Cơ mà cho hỏi thêm là Sort bằng DIC luôn được hông ta.
thì anh GiangLeLoi đẹp trai ga la còn chờ chi nữa , vung tay biểu diễn thoy . hi hiThực ra sort bằng DIC thì mình chưa có nghe, hỏng biết chơi được không nhưng sẽ tìm hiểu xem sao - chắc là có bạn mới nói??? Nhưng Sort Array 2 chiều thì có nghe rồi và thấy các sư phụ cũng viết code rồi nhưng nhìn đống code ấy mình muốn Ẹ luôn á. Thời gian tìm hiểu mấy cái code đó thui để dành thời gian tìm bạn zai cho nó nhanh à,![]()
![]()
![]()
Sub FilterSort()
Dim Arr(), i As Long, Temp, Res
Arr = Sheets("DATA").Range("A2:A" & Sheets("DATA").Range("A65536").End(3).Row).Value
With CreateObject("System.Collections.ArrayList")
For i = 1 To UBound(Arr)
If IsNumeric(Arr(i, 1)) = False Then .Add Arr(i, 1)
Next
.Sort
Temp = .ToArray
End With
ReDim Res(0 To UBound(Temp), 1 To 1)
For i = 0 To UBound(Temp)
Res(i, 1) = Temp(i)
Next
Sheets("TH").Range("B3").Resize(i) = Res
End Sub
.
http://www.giaiphapexcel.com/diendan/threads/94339.Ebook-Công-thức-và-hàm-Excel-97-2013Cảm ơn các bạn đã giúp đỡ.
Mình mới tập tành excel nên chỉ biết vài công thức và chưa ứng dụng được nhiều, GPX giúp mình đình hướng nên bắt đầu từ đâu và tìm hiểu những vấn đề gì được không?
bạn hoamattroicoi đã ngỏ ý rồi
thì anh GiangLeLoi đẹp trai ga la còn chờ chi nữa , vung tay biểu diễn thoy . hi hi
Sub LockTrung()Dim i As Long, k As Long
Dim Dic As Object
Dim sArr(), dArr
Set Dic = CreateObject("Scripting.dictionary")
sArr = Sheet1.Range("A2:D104").Value
ReDim dArr(1 To UBound(sArr), 1 To 3)
For i = 1 To UBound(sArr)
If Not Dic.exists(sArr(i, 1)) Then
Dic.Add sArr(i, 1), sArr(i, 4)
Else
Dic.Item(sArr(i, 1)) = Dic.Item(sArr(i, 1)) + sArr(i, 4)
End If
Next
dArr = Dic.keys
Call SortMang(dArr)
For i = 0 To UBound(dArr)
Cells(i + 3, 2) = dArr(i)
Cells(i + 3, 4) = Dic(dArr(i))
Next
Set Dic = Nothing
End Sub
'======================Bien dot menh mong quay dau la bo===============
Sub SortMang(sArr)
Dim CTren As Integer
Dim CDuoi As Integer
Dim Lo As Integer
Dim Mo As Integer
Dim Tmp As String
CTren = LBound(sArr)
CDuoi = UBound(sArr)
For Lo = CTren To CDuoi - 1
For Mo = Lo + 1 To CDuoi
If sArr(Lo) > sArr(Mo) Then
Tmp = sArr(Mo)
sArr(Mo) = sArr(Lo)
sArr(Lo) = Tmp
End If
Next Mo
Next Lo
End Sub
ồ cám ơn bạn Hoamattroicoi đã chiếu cố đến mình , hân hạnhKhông dễ xơi đâu như vậy đâu người đẹp doveandrose à, thực ra cuối cùng bài toán cũng quy về thuật toán sort mảng 2 chiều thôi, vẫn đổ dữ liệu ra sheet rồi call thủ tục sort (sort string lại Unicode hoặc TCVN3 nữa, rồi các thể loại). Có lẽ cách hay hơn cả là dùng Sort của Excel chứ cái code sort viết đọc cũng muốn buồn nôn à. Biển dốt mênh mông, quay đầu là bờ.![]()


Thực ra mình không thích xài cái CreateObject("System.Collections.ArrayList") đó thôi chứ không có gì cả doveandrose à vì có lần bác VetMini có viết thế này :ồ cám ơn bạn Hoamattroicoi đã chiếu cố đến mình , hân hạnh
Nhưng bạn làm mình bối rối quá , xin bạn chỉ điểm vài điều cho mình đỡ băn khoăn
Giải pháp ở #21 không sử dụng được ở bài này hả bạn ? sao chúng ta lại cần vẽ ra thêm hàm SortMang vậy bạn ?
trong TOPIC nàySystem.Collections.ArrayList là một class của .NET framework. Muốn dùng nó thì bắt buộc phải có .NET
Khi muốn viết code loại có thể sử dụng ở nhiều máy (portable), ngươi ta luôn luôn để ý cẩn thận với các class nhập từ các công cụ khác.
Tuy .NET nói chung là vô hại nhưng chưa chắc có những hệ thống người ta chấp nhận cài đặt. Người viết code có hi phải hy sinh tiện nghi và tốc độ để code có thể đại chúng hơn. Người viết code chuyên nghiệp có cách cô lập các loại code này riêng ra để áp dụng cho nhiều trường hợp khác nhau.



Muốn gì thì ta tự chủ động, hông cần mai mối đâu nha.bạn hoamattroicoi đã ngỏ ý rồi
thì anh GiangLeLoi đẹp trai ga la còn chờ chi nữa , vung tay biểu diễn thoy . hi hi
Nghe danh đã lâu. Có nhã ý nên muốn thử vài chiêu. Khâm phục, khâm phục, thật là hiếm gặp. (cơ mà đợi "nàng" lâu quá, giờ say rồi nhìn code hoa hết mắt)Biển dốt mênh mông, quay đầu là bờ.![]()



Nghe danh đã lâu. Có nhã ý nên muốn thử vài chiêu. Khâm phục, khâm phục, thật là hiếm gặp.

Gia cát dự một chút nhé, có phải chị Bé Còi tên thật là Giang, nhà ở đường Lê Lợi, Ngô Quyền, Hải Phòng? Nên đây có thể là nguyên nhân những ngưởi ở hải phòng nhầm nick với bạn giangleloi ở Đồng NaiThất lễ, thất lễ....sao lại thử ạ, tại hạ cũng là kẻ tầm thường thôi, lang thang phiêu bạc trên giang hồ GPE gần 4 năm rồi cũng học được ít bí kíp võ công của các sư phụ để lại, cốt là để giúp những người dân còn nghèo kiến thức Excel thôi chứ nào dám múa dìu qua mắt thợ trước các đại sư phụ.![]()
![]()
![]()
![]()
![]()
- "Vãi cả văn"
=====================
Cảm ơn bạn giangleloi, không hiểu sao đi Offline mấy anh chị ở Hải Phòng cứ hỏi mình giangleloi là nick ảo của hoamattroicoi à. Bạn lên tiếng chứng minh dùm mình cái, lần nào đi offline cũng mệt với câu hỏi này quá. Mà mình rất kết cái Avata của bạn, cái avata của bạn mà kết hợp với avata của anh huuthang_bd thì tuyệt với vì thành thành 2 chữ NHẪN-TÂM
.
Còn người đẹp doveandrose kia á, cũng ấn tượng lắm, nhất là cái tên email đăng ký diễn đàn, rất cá tính. Xem ra cũng là 1 cao thủ giả ngây giả ngô đi lừa thiên hạ quá, khộ thân thiên hạ lắm doveandrose ạ![]()
![]()
![]()
![]()
![]()
bạn sai rồi hpKhuong à . Tôi im ru chỉ đơn giản vì ... tôi không biết làm . Đơn giản là vậy , mấy chữ "đại hiệp" xin trả lại ban tổ chức . hi hi . Bạn hpKhuong thấy đó , ngay cả cách sort cơ bản nhất tôi cũng không biết , mà bạn Hoamattroicoi xinh đẹp ấy còn đề phòng tới cả trường hợp máy người dùng không cài .Net Framework nữa kìa .Chính vì biết mình kém cõi nên mấy ngày gần đây tôi cố gắng tìm cách học tập bạn Hoamattroicoi , những mong bạn ấy thu nhận làm học trò đây. Nếu bạn gọi tại hạ như thế thì phải gọi nữ hiệp Hoamattroicoi là gì đây bạn ?Này đúng là "Vãi cả văn kiếm hiệp" ấy chứ...Nàng hoamattroi này chắc là Fan của Kim Dung tiền bối chăng...???
Còn anh chàng quyến rũ doveandrose hôm nay bạn hoamattroi đã nhận ra là...anh ấy hay lừa tềnh rồi ...ah?híhí...anh ấy là "cao đại hiệp đó"
--------------------------------------------
Quay lại vấn đề sort trong DIC, lúc trước có topic kia mình có ý hỏi là làm sao để sort trong DIC (tất nhiên là trong mảng, mục đích để làm List khi add key trực tiếp vào Source của Data Validation cho nó đẹp ý mà) thế mà anh chàng doveandrose cũng im ru luôn..........có chăng là anh ấy biết mà giấu ta.........để đến hôm nay bé giangleloi khai khẩu thì có hoamatroi xuất chiêu.......... Vậy sao anh doveandrose "chim hồng" không cho thiên hạ biết code của anh ấy... nhỉ? anh ấy giấu kỹ quá....![]()
