Xin trợ giúp code VBA auto filter 1 cột

Liên hệ QC

khainb

Thành viên mới
Tham gia
26/10/18
Bài viết
2
Được thích
0
Mong các bác chỉ dẫn e code VBA auto filter cột ORDER NUMBER.
Em muốn làm code khi ấn vào nút button thì auto filter ra được số đơn hàng tiếp theo ạ (lưu ý số đơn hàng không chắc đã liên tiếp). Em cảm ơn ạ !!!
 

File đính kèm

  • CAR_Order.xlsm
    916.5 KB · Đọc: 21
Mong các bác chỉ dẫn e code VBA auto filter cột ORDER NUMBER.
Em muốn làm code khi ấn vào nút button thì auto filter ra được số đơn hàng tiếp theo ạ (lưu ý số đơn hàng không chắc đã liên tiếp). Em cảm ơn ạ !!!
Oanh Thơ đọc mà chưa hiểu lắm,bạn có thể giải thích cụ thể hoặc cho ví dụ minh họa được không ạ?
 
Upvote 0
Mong các bác chỉ dẫn e code VBA auto filter cột ORDER NUMBER.
Em muốn làm code khi ấn vào nút button thì auto filter ra được số đơn hàng tiếp theo ạ (lưu ý số đơn hàng không chắc đã liên tiếp). Em cảm ơn ạ !!!
ít ra bạn cũng phải nêu thông tin là lấy đơn hàng theo kiểu gì thì mới biết cách mà làm chư.file của bạn thì bạn biết người khác nhìn vào đấy ai mà có thời gian tìm quy luật để lấy đơn hàng giúp bạn mệt thật.
 
Upvote 0
Mong các bác chỉ dẫn e code VBA auto filter cột ORDER NUMBER.
Em muốn làm code khi ấn vào nút button thì auto filter ra được số đơn hàng tiếp theo ạ (lưu ý số đơn hàng không chắc đã liên tiếp). Em cảm ơn ạ !!!
điều kiện autofilter của bạn là gì, nếu ORDER NUMBER giống thì lấy qua 1 sheets khác hay sao?
 
Upvote 0
Oanh Thơ đọc mà chưa hiểu lắm,bạn có thể giải thích cụ thể hoặc cho ví dụ minh họa được không ạ?
dạ e chỉ cần lọc lần lượt các đơn hàng để in ra thôi ạ. trong cột ORDERNUMBER vd: đang filter là 2652986 và đơn hàng tiếp theo là 2652987 thì chỉ cần code VBA click vào nút button là nó tự fillter sang 2652987 ấy ạ.
Bài đã được tự động gộp:

điều kiện autofilter của bạn là gì, nếu ORDER NUMBER giống thì lấy qua 1 sheets khác hay sao?
điều kiện filter của e chỉ là next sang order tiếp theo thôi ạ
Bài đã được tự động gộp:

ít ra bạn cũng phải nêu thông tin là lấy đơn hàng theo kiểu gì thì mới biết cách mà làm chư.file của bạn thì bạn biết người khác nhìn vào đấy ai mà có thời gian tìm quy luật để lấy đơn hàng giúp bạn mệt thật.
dạ e chỉ cần next sang đơn hàng tiếp theo để e print ra thôi ạ. Chứ dùng filter của excel mà cứ bấm chọn từng đơn hàng rồi in ra lâu quá.
 
Upvote 0
dạ e chỉ cần lọc lần lượt các đơn hàng để in ra thôi ạ. trong cột ORDERNUMBER vd: đang filter là 2652986 và đơn hàng tiếp theo là 2652987 thì chỉ cần code VBA click vào nút button là nó tự fillter sang 2652987 ấy ạ.
Bài đã được tự động gộp:


điều kiện filter của e chỉ là next sang order tiếp theo thôi ạ
Bài đã được tự động gộp:


dạ e chỉ cần next sang đơn hàng tiếp theo để e print ra thôi ạ. Chứ dùng filter của excel mà cứ bấm chọn từng đơn hàng rồi in ra lâu quá.
vậy sao bạn không nhờ là bạn chỉ cần bấm 1 nút nó sẽ lọc ra từng oder 1 rồi in luôn cần gì làm thủ công cho nó mệt
 
Upvote 0
dạ e chỉ cần lọc lần lượt các đơn hàng để in ra thôi ạ. trong cột ORDERNUMBER vd: đang filter là 2652986 và đơn hàng tiếp theo là 2652987 thì chỉ cần code VBA click vào nút button là nó tự fillter sang 2652987 ấy ạ.
Bài đã được tự động gộp:


điều kiện filter của e chỉ là next sang order tiếp theo thôi ạ
Bài đã được tự động gộp:


dạ e chỉ cần next sang đơn hàng tiếp theo để e print ra thôi ạ. Chứ dùng filter của excel mà cứ bấm chọn từng đơn hàng rồi in ra lâu quá.

@khainb thử nút "Lọc" trong file kèm nhé.
 

File đính kèm

  • CAR_Order.xlsm
    838.5 KB · Đọc: 16
Upvote 0
Mong các bác chỉ dẫn e code VBA auto filter cột ORDER NUMBER.
Em muốn làm code khi ấn vào nút button thì auto filter ra được số đơn hàng tiếp theo ạ (lưu ý số đơn hàng không chắc đã liên tiếp). Em cảm ơn ạ !!!
Chạy thử đoạn code sau xem sao
Bạn có thể tạo 1 nút bấm, gán code vào rồi chạy
Mã:
Option Explicit
Public OrderNumber
Public Nm As Long

Sub Sort_AutoFilter()
Dim SArr As Variant
Dim DArr
Dim i As Long, j, k
Sheet1.UsedRange.AutoFilter
If Nm = 0 Then
    With CreateObject("Scripting.Dictionary")
        SArr = Sheet1.Range("c4", Sheet1.Range("c1000000").End(xlUp))
        For i = 1 To UBound(SArr)
            .Item(SArr(i, 1)) = ""
            If j < SArr(i, 1) Then j = SArr(i, 1)
            If i = 1 Then
                k = SArr(i, 1)
            Else
                If k > SArr(i, 1) Then k = SArr(i, 1)
            End If
        Next i
        ReDim DArr(k To j)
        ReDim OrderNumber(1 To j - k + 1)
        For Each j In .keys
            DArr(j) = j
        Next j
        j = 0
        For i = LBound(DArr) To UBound(DArr)
            If DArr(i) <> "" Then
                j = j + 1
                OrderNumber(j) = DArr(i)
            End If
        Next i
        ReDim Preserve OrderNumber(1 To j)
    End With
End If
Nm = Nm + 1
If Nm = UBound(OrderNumber) Then MsgBox "Het du lieu"
With Sheet1
    .Range("a3", .Range("s1000000").End(xlUp)).AutoFilter
    .Range("a3", .Range("s1000000").End(xlUp)).AutoFilter Field:=3, Criteria1:=OrderNumber(Nm)
End With
End Sub
 
Upvote 0
Chạy thử đoạn code sau xem sao
Bạn có thể tạo 1 nút bấm, gán code vào rồi chạy
Mã:
Option Explicit
Public OrderNumber
Public Nm As Long

Sub Sort_AutoFilter()
Dim SArr As Variant
Dim DArr
Dim i As Long, j, k
Sheet1.UsedRange.AutoFilter
If Nm = 0 Then
    With CreateObject("Scripting.Dictionary")
        SArr = Sheet1.Range("c4", Sheet1.Range("c1000000").End(xlUp))
        For i = 1 To UBound(SArr)
            .Item(SArr(i, 1)) = ""
            If j < SArr(i, 1) Then j = SArr(i, 1)
            If i = 1 Then
                k = SArr(i, 1)
            Else
                If k > SArr(i, 1) Then k = SArr(i, 1)
            End If
        Next i
        ReDim DArr(k To j)
        ReDim OrderNumber(1 To j - k + 1)
        For Each j In .keys
            DArr(j) = j
        Next j
        j = 0
        For i = LBound(DArr) To UBound(DArr)
            If DArr(i) <> "" Then
                j = j + 1
                OrderNumber(j) = DArr(i)
            End If
        Next i
        ReDim Preserve OrderNumber(1 To j)
    End With
End If
Nm = Nm + 1
If Nm = UBound(OrderNumber) Then MsgBox "Het du lieu"
With Sheet1
    .Range("a3", .Range("s1000000").End(xlUp)).AutoFilter
    .Range("a3", .Range("s1000000").End(xlUp)).AutoFilter Field:=3, Criteria1:=OrderNumber(Nm)
End With
End Sub

Xin chào CHAOQUAY,
Oanh Thơ chạy thử code của bạn, bấm các lần tiếp theo vẫn lọc ở "26529831"
Mong muốn là:
vd: đang filter là 2652986 và đơn hàng tiếp theo là 2652987
Nhờ bạn xem giúp.
 
Upvote 0

File đính kèm

  • Sort_Filter.rar
    3.2 MB · Đọc: 18
Lần chỉnh sửa cuối:
Upvote 0
Không biết máy bạn thế nào, máy tôi chạy bình thường
Bạn xem thử clip dưới đây xem sao

Ah được rồi ạ.
Nguyên nhân không chạy được là vì Oanh Thơ (OT) copy toàn bộ code của bạn rồi pase phía dưới Sub Macro2 của OT tạo trước đó.
nên cái phần :
Mã:
Option Explicit
Public OrderNumber
Public Nm As Long
nằm phía dưới Sub Macro2 vì vậy không chạy được ạ , sau khi chuyển 3 dòng trên lên phía trên đầu thì đã OK.
Cảm ơn bạn code của bạn chuyên nghiệp quá,OT cần học hỏi nhiều không biết đến khi nào OT mới viết được như bạn.
 
Upvote 0
Web KT

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

Back
Top Bottom