tlthlnmtnn
Thành viên mới
- Tham gia
- 1/4/12
- Bài viết
- 37
- Được thích
- 2
Bạn thư code sau: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.
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
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
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
Uhm, Thanks, đc rùiLỗi gì bạn mình đã text thử rồi mà, xem thêm file đính kèm xem.
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
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
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.