Dữ liệu gốc bạn ở đâu, để ý thấy số thứ tư là ký tự cuôi.Chào các bạn,
Mình có file excel trong sheet1 chưa sort.
hiện tại mình làm bằng tay để sửa lại cho đúng thứ tự trong sheet "sort"
Mình chưa nghĩ ra dc công thức để sort theo như mẫu.
Các bạn xem & giúp mình công thức sort cho t/h file đính kèm
Thanks,
Tam
Dữ liệu gốc bạn ở đâu, để ý thấy số thứ tư là ký tự cuôi.
Bây giờ bạn làm 1 bảng và dùng ct theo số thứ tự là OK
Dữ liệu này dc copy từ table trong access, mục tiêu mình đưa ra excel để sort lại các giá trị B1:K11 dựa trên ký tự số cuối cùng.
Tuy nhiên mình vẫn chưa nghĩ ra dc cách sắp xếp
1. Bạn cho mình hỏi cách lấy ký tự số cuối cùng như thế nào ?
mình dùng hàm :
Function lastend(str As String)
lastend = InStrRev(str, " ") - 2
End Function
chỉ lấy dc 2 ký tự (1 đến 11...02)
2. Mình vẫn chưa nghĩ ra cách sort B1:K11
Thanks,
BTam
Chào các bạn,
Mình có file excel trong sheet1 chưa sort.
hiện tại mình làm bằng tay để sửa lại cho đúng thứ tự trong sheet "sort"
Mình chưa nghĩ ra dc công thức để sort theo như mẫu.
Các bạn xem & giúp mình công thức sort cho t/h file đính kèm
Thanks,
Tam
Thấy cũng dể mà hoangdanh, 1 vòng lập For Each duy nhất thôi! Thuật toán thì vẩn giống như cách làm của các bạn dùng công thức (tức cũng xem ký tự số cuối chuổi là số mấy)... Tìm ra được số đó rồi thì việc còn lại quá dể: Điền vào ô trốngMình dùng công thức để sort.
Nếu dùng For next thì nó cứ lòng vòng hơi mệt
Option Explicit
Sub Loc()
Dim SourDS As Range, Clls As Range, SortDS As Range
Dim Er As Long
Dim K As Integer, iR As Integer, iC As Integer
Application.ScreenUpdating = False
Er = Sheet1.[A65000].End(xlUp).Row
Set SourDS = Sheet1.[B1].Resize(Er, 10)
Set SortDS = Sheet2.[B1].Resize(Er, 10)
Sheet2.Range("A1:A" & Er).Value = Sheet1.Range("A1:A" & Er).Value
For Each Clls In SourDS
If Clls <> "" Then
K = Mid(Clls, InStr(1, Clls, "/200") + 6, 3)
iR = Int((K - 1) / 10) + 1
iC = ((K - 1) Mod 10) + 1
SortDS(iR, iC) = Clls
End If
Next
Application.ScreenUpdating = True
End Sub