Giúp mình viết code sắp xếp

Liên hệ QC

tlthlnmtnn

Thành viên mới
Tham gia
1/4/12
Bài viết
37
Được thích
2
Mình có 1 file dữ liệu nhập từ cột B đến cột E
giờ mình muốn nhập số từ A4 trở đi là bất kỳ, sau khi nhập xong mình nhập vào A3 là số 0 thì nó sẽ sắp xếp dữ liệu theo thứ tự tăng dần, như trong file gửi theo ấy.
Thanks nhiều nha.
 

File đính kèm

Mình có 1 file dữ liệu nhập từ cột B đến cột E
giờ mình muốn nhập số từ A4 trở đi là bất kỳ, sau khi nhập xong mình nhập vào A3 là số 0 thì nó sẽ sắp xếp dữ liệu theo thứ tự tăng dần, như trong file gửi theo ấy.
Thanks nhiều nha.
Bạn thư code sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim ws As Worksheet
  Set ws = Worksheets("Sheet1")
   If Target.Address = "$A$3" Then
ws.Range("A3:E8").Sort ws.Range("A3"), 1, Header:=1 = (Target = 0)
End If
End Sub
 
Bạn thử dùng code dưới đây - đưa vào sự kiện change của sheet dữ liệu của bạn:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range) 
   If Not Intersect(Target, Me.[A3]) Is Nothing Then
        Me.Range(Target.Cells(2, 1), Target.Cells(2, 1).End(xlDown).End(xlToRight)).Sort key1:=Target.Cells(2, 1) 
   End If
End Sub
 
tvxdgt sao chạy nó bị lỗi bạn à

Bạn thử dùng code dưới đây - đưa vào sự kiện change của sheet dữ liệu của bạn:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range) 
   If Not Intersect(Target, Me.[A3]) Is Nothing Then
        Me.Range(Target.Cells(2, 1), Target.Cells(2, 1).End(xlDown).End(xlToRight)).Sort key1:=Target.Cells(2, 1) 
   End If
End Sub

Thanks bạn, nãy mình chưa biết nó có lỗi gì ko nên chưa đặt đầy đủ hết điều kiện, bạn có thể sửa lại 1 chút ko, Hãy cho điều kiện dừng khi cột E ko có dữ liệu nha, vì mình muốn cột A nếu ko có số nó sẽ bỏ qua những cột đó nhưng vẫn chạy tiếp để sắp xếp hết
 
Thanks bạn, nãy mình chưa biết nó có lỗi gì ko nên chưa đặt đầy đủ hết điều kiện, bạn có thể sửa lại 1 chút ko, Hãy cho điều kiện dừng khi cột E ko có dữ liệu nha, vì mình muốn cột A nếu ko có số nó sẽ bỏ qua những cột đó nhưng vẫn chạy tiếp để sắp xếp hết

Mình cũng không hiểu hết ý của bạn lắm. Nếu ở cột E chưa có dữ liệu thì bỏ qua không sắp xếp phải không?
Nếu đúng ý như thế, thì bạn thay code dưới đây xem sao:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ra As Range
   If (Not Intersect(Target, Me.[A3]) Is Nothing) And (Target = 0) Then
    Application.ScreenUpdating = False 
   Set ra = Me.Range(Target.Cells(2, 1), Target.Cells(2, 1).End(xlDown).End(xlToRight))
    For i = 1 To ra.Rows.Count 
       If IsEmpty(ra.Cells(i, 5)) Then ' so 5 -> cot E : thay doi tuy theo du lieu cua ban '
            ra.Rows(i).EntireRow.Hidden = True
        End If 
   Next
    ra.Sort key1:=Target.Cells(2, 1)
    ra.Rows.EntireRow.Hidden = False 
   Application.ScreenUpdating = True
   End If
End Sub

Nếu ở ô A3 đã có số 0 thì bạn chỉ cần chọn lại nó, nhấn F2 và Enter để nó sắp lại.
 
Mình cũng không hiểu hết ý của bạn lắm. Nếu ở cột E chưa có dữ liệu thì bỏ qua không sắp xếp phải không?
Nếu đúng ý như thế, thì bạn thay code dưới đây xem sao:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ra As Range
   If (Not Intersect(Target, Me.[A3]) Is Nothing) And (Target = 0) Then
    Application.ScreenUpdating = False 
   Set ra = Me.Range(Target.Cells(2, 1), Target.Cells(2, 1).End(xlDown).End(xlToRight))
    For i = 1 To ra.Rows.Count 
       If IsEmpty(ra.Cells(i, 5)) Then ' so 5 -> cot E : thay doi tuy theo du lieu cua ban '
            ra.Rows(i).EntireRow.Hidden = True
        End If 
   Next
    ra.Sort key1:=Target.Cells(2, 1)
    ra.Rows.EntireRow.Hidden = False 
   Application.ScreenUpdating = True
   End If
End Sub

Nếu ở ô A3 đã có số 0 thì bạn chỉ cần chọn lại nó, nhấn F2 và Enter để nó sắp lại.

Chẹp, nếu đang xếp gặp dữ liệu ở cột E rỗng nó sẽ dừng chương trình, còn cột A đang chạy mà có rỗng thì bỏ cột rỗng xuống cột dưới xếp tiếp, nhưng mà code của bạn trên chạy tốt với dữ liệu của mình rồi, thanks bạn, ko cần phải viết nữa đâu
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom