[giúp đỡ !!]Lọc và sắp xếp dữ liệu dùng vba excel!!!!!!!!!! (1 người xem)

  • Thread starter Thread starter avada29
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Status
Không mở trả lời sau này.

avada29

Thành viên mới
Tham gia
26/7/13
Bài viết
23
Được thích
0
Các bạn giúp mình viết code cho bài tính này với, mới dùng vba excel nên chưa biết gì hết, hix.:.,:.,
Mình có một file excel trong đó cột B hiển thị thông tin mã trạm, các mã trạm này bị trùng nhau nhưng thông tin ứng với mỗi mã trạm này lại khác nhau. Ví dụ như mình có trạm KHA0001 thì khi lọc ra sẽ có 2 tủ nguồn DC (DC1, DC2), 2 tủ di động (BTS_900_A,BTS_2100_A), 2 bình cứu hoả.....
Bây giờ cứ trạm nào trùng thì mình chỉ ghi một mã trạm nhưng sẽ có các hàng tương ứng với số lượng tủ nguồn Dc, tủ di động....., để tiện tính toán về sau thì làm thế nào vậy. Mình có thể lọc rồi tính từng trạm nhưng số lượng rất lớn, làm như vậy không thể nào nhanh được nên muốn viết bằng VBA để tự động hoá công việc này, các cao nhân giúp mình với
 

File đính kèm

mình up lại file rar nhé, file nhẹ thế mà nó không cho up lên, bó tay thiệt
 

File đính kèm

Upvote 0
mình up lại file rar nhé, file nhẹ thế mà nó không cho up lên, bó tay thiệt
Bạn không tạo được 1 cái mẫu và vài kết quả muốn có như thế nào thì làm sao biết bạn muốn nó ra sao đây.
Với lại bạn đặt tiêu đề sao "hiu" quá.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn không tạo được 1 cái mẫu và vài kết quả muốn có như thế nào thì làm sao biết bạn muốn nó ra sao đây.
Với lại bạn đặt tiêu đề sao "hiu" quá.
Bạn xem kết quả ví dụ như trong sheet 2 nhé, mà "hiu" là sao nhỉ, mình không hiểu :-=:-=//////
 

File đính kèm

Upvote 0
Bạn xem kết quả ví dụ như trong sheet 2 nhé, mà "hiu" là sao nhỉ, mình không hiểu :-=:-=//////
Bạn đọc cái này rồi so sánh lại với tiêu đề của bạn xem sao.
Lưu ý khi gửi bài:
- Bài viết không dấu Tiếng Việt sẽ bị xóa
- Đặt tựa đề theo sát nội dung câu hỏi/ trả lời. Các bài viết có tựa đề chung chung như
Help me, cứu cứu, cứu em, gấp gấp,... sẽ bị xoá
- Giải thích/ mô tả câu hỏi càng chi tiết càng tốt
- Nên gửi thêm tập tin Excel kèm chú thích về câu hỏi nếu có
Xem thêm Nội Quy Diễn Đàn
"Hiu" ở quê tui có nghĩa "không vững chắc", "không chắc ăn", ... như "kỳ thi này sao tau thấy hiu quá!"
 

File đính kèm

Upvote 0
Bạn đọc cái này rồi so sánh lại với tiêu đề của bạn xem sao.

"Hiu" ở quê tui có nghĩa "không vững chắc", "không chắc ăn", ... như "kỳ thi này sao tau thấy hiu quá!"

Cám ơn bạn nhé, "hiu" chắc nghĩa là "phiêu" phải không:-=:-=
Mà cho mình hỏi tí nè, cái file bạn gởi lại ở sheet 1 là các trạm đã được sắp xếp bằng tay luôn hay là được sắp xếp sau khi chạy vba thế, mình mở ra đã thấy được sắp xếp rồi :unknw::unknw:
 
Upvote 0
Cám ơn bạn nhé, "hiu" chắc nghĩa là "phiêu" phải không:-=:-=
Mà cho mình hỏi tí nè, cái file bạn gởi lại ở sheet 1 là các trạm đã được sắp xếp bằng tay luôn hay là được sắp xếp sau khi chạy vba thế, mình mở ra đã thấy được sắp xếp rồi :unknw::unknw:
Sheet1 tôi chẳng làm gì với nó cả, ban đầu từ bài #6 nó đã là như thế.
Sheet GPE thì bấm nút thôi
Nhớ Enable Macros.
 
Lần chỉnh sửa cuối:
Upvote 0
http://www.mediafire.com/download/lo1op9l8c9dr21h/vi+du2.rar
đây là bản gốc nè, bạn tải về xem thử thế nào nhé :D
Không hiểu bạn nói "xem thử" là sao?
Dữ liệu thật của bạn đâu có giống file của bạn gởi bên trên.
Nó có 14079 dòng và 220 cột gần 3.100.000 cells chứa dữ liệu.
Nếu bạn muốn nó được xếp gần nhau thì có thể Sort lại theo cột C là được rồi.
Còn nếu bạn muốn xài code như bài trên thì lấy Sub này, sửa tên sheet1 thành "DATA", sheet2 thành "GPE" rồi tạo nút bấm hay gì đó cho code chạy.
Bấm nút xong nhớ đi uống 1 ly cà phê để khỏi nóng ruột.
Máy tôi chạy gần 50 giây.
[GPECODE=vb]
Public Sub GPE_()
Application.ScreenUpdating = False
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, t As Variant
t = Timer
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("DATA")
sArr = .Range(.[C4], .[C1048576].End(xlUp)).Offset(, -2).Resize(, 220).Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 220)
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 3)
If Not Dic.Exists(Tem) Then
K = K + 1: dArr(K, 1) = K
Dic.Add Tem, K
For J = 2 To 220
dArr(K, J) = sArr(I, J)
Next J
Else
For J = 73 To 220
If sArr(I, J) <> Empty Then dArr(Dic.Item(Tem), J) = dArr(Dic.Item(Tem), J) & Chr(10) & sArr(I, J)
Next J
End If
Next I
With Sheets("GPE")
.[A4].Resize(50000, 220).ClearContents
.[A4].Resize(K, 220) = dArr
.[B4].Resize(K, 220).Sort Key1:=.[C4]
End With
Set Dic = Nothing
Application.ScreenUpdating = True
MsgBox Timer - t
End Sub[/GPECODE]
 
Upvote 0
Cám ơn bạn nhé, à mà bạn có tài liệu nào học lập trình excel từ căn bản tới nâng cao có thể chia sẻ cho mình được không, mà mình hỏi thêm cái này nữa nè, có cách nào để tách các dữ liệu ra các ô khác nhau không, vì mình muốn cộng các giá trị như công suất lại với nhau mà để trong một ô thì không cộng lại được :D
 
Upvote 0
Cám ơn bạn nhé, à mà bạn có tài liệu nào học lập trình excel từ căn bản tới nâng cao có thể chia sẻ cho mình được không, mà mình hỏi thêm cái này nữa nè, có cách nào để tách các dữ liệu ra các ô khác nhau không, vì mình muốn cộng các giá trị như công suất lại với nhau mà để trong một ô thì không cộng lại được :D
Bài trên tôi có viết:
Nếu bạn muốn nó được xếp gần nhau thì có thể Sort lại theo cột C là được rồi.
Bạn SORT sheet1 lại theo cột C, các Mã Trạm sẽ nằm liên tục nhau, muốn cộng trừ gì thì cứ tính thôi. Muốn Merge các ô Mã Trạm lại thì Merge sau khi SORT.
Trong Code. Nếu bạn yêu cầu rõ cột nào cộng dồn số liệu, cột nào nối chuỗi dữ liệu, cột nào chỉ cần lấy 1 dòng dữ liệu đầu tiên, hay gì gì... thì có thể cho code nó làm được mà.
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn bác nhé, mà nhân tiện cho mình hỏi có tài liệu nào học lập trình căn bản tí không, cái của bạn về mình còn đọc lại để hiểu code mà khó hiểu quá, hix
 
Upvote 0
Upvote 0
Tiêu đề topic quả thật là "hiu" hoặc "phiêu". Để thì thương, vương thì tội. Để thì là cả 1 sự vi phạm, xóa thì bị mấy bài liên quan, làm sao bây giờ?
 
Upvote 0
Tiêu đề topic quả thật là "hiu" hoặc "phiêu". Để thì thương, vương thì tội. Để thì là cả 1 sự vi phạm, xóa thì bị mấy bài liên quan, làm sao bây giờ?
Dù sao tác giả cũng đọc các bài trả lời rồi, xoá cho đúng nguyên tắc.
 
Upvote 0
Tiêu đề topic phạm quy
 
Upvote 0
Status
Không mở trả lời sau này.

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

Back
Top Bottom