Sắp xếp dữ liệu theo điều kiện

Liên hệ QC

ERX_Vietnam

Thành viên hoạt động
Tham gia
27/9/08
Bài viết
113
Được thích
175
Mình có một file dùng để sắp xếp trạng thái các tài xế, mong được các bạn giúp đỡ như sau:
- File của mình gồm có danh sách tài xế, bảng tổng hợp thông tin.
- Trong file mình đã dùng validation tạo list ở cột "Status".
- Mình muốn các bạn giúp mình dùng VBA sao cho khi mình chọn một trong các trạng thái của cột "Status" thì các VN code (tưng ứng với cột "Code"-tô màu vàng) sẽ được truy xuất vào "list" theo từng trạng thái tương ứng. Nhưng phải đảm bảo là mình chọn dòng nào trước thì VN code phải chèn lên trước, dòng nào chọn sau thì sẽ nối tiếp xuống (vì mình muốn sắp thứ tự tài xế mà). Và khi mình thay đổi trạng thái tài xế (ví dụ từ "Break" sang "Available" thì tại "list" VN code đó phải mất đi và dữ liệu tự động dồn lên.

Mình rất mong được giúp đỡ sớm sớm vì tối nay 23:00 hệ thống SAP của cty bị down rồi, việc sắp xếp tài xế sẽ gặp nhiều khó khăn lắm, hu hu.
 

File đính kèm

  • saptai.xls
    25 KB · Đọc: 31
Bạn hãy thử với file đính kèm xem sao?

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range([c2], Cells([b65500].End(xlUp).Row, "C"))) Is Nothing Then
    Dim Col As Byte, eRw As Long:           Dim Code As String
    Dim Rng As Range, Rng0 As Range
    Const Br As String = "Break":            Const Av As String = "Available"
    With Target
        Col = Switch(.Value = Br, 5, .Value = "Not " & Av, 6, .Value = Av, 7)
        eRw = Cells(65500, "B").End(xlUp).Row
        Set Rng = Range("E4:G" & eRw + 5)
        Code = .Offset(, -1).Value
        Set Rng0 = Rng.Find(Code, , xlFormulas, xlWhole)
        If Not Rng0 Is Nothing Then Rng0.Delete Shift:=xlUp
        eRw = Cells(65500, Col).End(xlUp).Row
        If eRw < 5 Then eRw = 4
        Cells(eRw + 1, Col).Value = Code
    End With
 End If
End Sub
:-=
 

File đính kèm

  • GPE.rar
    12 KB · Đọc: 54
Upvote 0
Thanks bạn nhiều lắm! Mình làm được rồi nhưng cho mình hỏi tí sao mình chọn tính năng sharewordbook thì macro ko thực hiện được vậy bạn? Muốn share được thì phải làm sao?
 
Upvote 0
Thanks bạn nhiều lắm! Mình làm được rồi nhưng cho mình hỏi tí sao mình chọn tính năng sharewordbook thì macro ko thực hiện được vậy bạn? Muốn share được thì phải làm sao?

Nếu file đã được chọn tính năng ShareWorkbook thì vẫn sử dụng Macro được bình thường. Chỉ có điều là ta không thể xem được nội dung của Macro thôi.
Tuy nhiên, bạn nên hạn chế sử dụng Macro khi Share workbook vì nó làm cho quá trình thực hiện bị chậm và đôi khi cũng bị lỗi nữa.
 
Upvote 0
Hix! ko được bạn ơi! mình chọn share wordbook thì máy báo lỗi ngay.
"Runtime error 1004, this comand is not available in a shared wordbook"
Bạn xem giúp mình đi!

Hix sao không ai giúp mình share file này hết vậy nhỉ??? Mình cần giúp đỡ lắm nè mấy bro ơi! File mà không share được thì rất khó ứng dụng vì mình phải quản lý xe của những nơi khác rất xa nơi công tác.
Hix giúp mình với nha!
Thanks!
Sau khi tìm hiểu mình nhận thấy rằng đoạn code sau làm cho file này không hoạt động ở chế độ share:
Col = Switch(.Value = Br, 5, .Value = "Not " & Av, 6, .Value = Av, 7)
eRw = Cells(65500, "B").End(xlUp).Row
Set Rng = Range("E4:G" & eRw + 5)
Code = .Offset(, -1).Value
Set Rng0 = Rng.Find(Code, , xlFormulas, xlWhole)
If Not Rng0 Is Nothing Then Rng0.Delete shift:=xlUp
eRw = Cells(65500, Col).End(xlUp).Row
If eRw < 5 Then eRw = 4
Cells(eRw + 1, Col).Value = Code
Nếu mình đổi giá trị này (vd "H4:J") thì tính năng detele dữ liệu sẽ không còn tác dụng. Nhưng khi đó lại share được.
Mong các "cao thủ" ra tay giúp mình với!
 

File đính kèm

  • Bang Sap Tai - CL.xls
    43.5 KB · Đọc: 11
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT
Back
Top Bottom