Sắp xếp dữ liệu (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Ha Pagoda

Thành viên mới
Tham gia
30/1/13
Bài viết
2
Được thích
0
Mình không sắp xếp được file này. Các bạn chỉ giúp mình với.
 

File đính kèm

bạn làm theo hướng dẫn nha
Bạn bôi đen vùng cần sắp xếp sau đó vào Data/ Sort/ hiện ra thẻ sort , trong mục Order bạn chọn A tới Z là xong
Cô bé này, lại chỉ tầm bậy rồi. Ý người ta muốn làm sao cho 123hv13/5-3 được sắp xếp trước 123hv13/5-10, chứ nếu chỉ đơn giản như thế thì hỏi làm gì?! Cô bé đã thử chưa? Mấy cái có phần đầu giống nhau (123hv13/5-) sẽ được sắp xếp theo thứ tự phần đuôi là 10, 11, 13, 14 rồi mới đến 3, 4, 6, 9.
 
Lần chỉnh sửa cuối:
Cô bé này, lại chỉ tầm bậy rồi. Ý người ta muốn làm sao cho 123hv13/5-3 được sắp xếp trước 123hv13/5-10, chứ nếu chỉ đơn giản như thế thì hỏi làm gì?! Cô bé đã thử chưa? Mấy cái có phần đầu giống nhau (123hv13/5-) sẽ được sắp xếp theo thứ tự phần đuôi là 10, 11, 13, 14 rồi mới đến 3, 4, 6, 9.

thì em nhìn mấy số đầu mà ;;;;;;;;;;;, suy nghĩ thực sự em không tìm ra hướng giải.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bài này dùng cột phụ nhé
Công thức trong cột phụ
Mã:
=LEFT(A4,FIND("-",A4))&REPT(1,RIGHT(A4,LEN(A4)-FIND("-",A4)))
Giờ Data > Sort bảng theo cột phụ bình thường

Em đã chuyển đổi 1 chút ở công thức kết quả ra theo mẫu, nhưng khi sort vẫn còn lộn xộn không như bảng yêu cầu
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
p/s để em tìm công thức, em sẽ làm ra, cảm ơn Anh DHN46 trợ giúp.

Đã dùng cột phụ thì dùng một cột hay hai cột cũng tốt; Cần làm một cột có đây.
1. Tại ô D4: =VALUE((LEFT(A4;3))&IF(VALUE(MID(A4;FIND("-";A4)+1;3))<=9;"0"&MID(A4;FIND("-";A4)+1;3);MID(A4;FIND("-";A4)+1;3)))
2. Sao chép kết quả Ô D4 xuống
3. Bôi đen vùng sắp xếp \ Data\sort\sort by\ColumnD\Ascending\OK
Ghi chú: Dù sao vẫn thích xếp số tự nhiên tăng dần, Dị ứng với xếp ký tự, không biết xếp ký tự có bị lỗi không nhỉ?
Có cách nào không dùng cột phụ không?
Để đơn giản người nhập nên quy ước nhập 123hv13/5-3 thành 123hv13/5-03; nhập cùng một định dạng: ssshv13/5-SS với S là số tự nhiên
File dung 1 cot phu
http://www.mediafire.com/?jls9r9vzdiweoh8
 
Lần chỉnh sửa cuối:
Đã dùng cột phụ thì dùng một cột hay hai cột cũng tốt; Cần làm một cột có đây.
1. Tại ô D4: =VALUE((LEFT(A4;3))&IF(VALUE(MID(A4;FIND("-";A4)+1;3))<=9;"0"&MID(A4;FIND("-";A4)+1;3);MID(A4;FIND("-";A4)+1;3)))
2. Sao chép kết quả Ô D4 xuống
3. Bôi đen vùng sắp xếp \ Data\sort\sort by\ColumnD\Ascending\OK
Ghi chú: Dù sao vẫn thích xếp số tự nhiên tăng dần, Dị ứng với xếp ký tự, không biết xếp ký tự có bị lỗi không nhỉ?
Có cách nào không dùng cột phụ không?
Để đơn giản người nhập nên quy ước nhập 123hv13/5-3 thành 123hv13/5-03; nhập cùng một định dạng: ssshv13/5-SS với S là số tự nhiên
File dung 1 cot phu
http://www.mediafire.com/?jls9r9vzdiweoh8

làm cách của bạn rất rất mệt, không dùng cột phụ như Anh DHN46 ấy, nhưng khi làm xong, dữ liệu không tài nào sort được khớp như yêu cầu, điên quá ag:=\+
 
Mình không sắp xếp được file này. Các bạn chỉ giúp mình với.
Nếu dữ liệu lớn
Bạn này mình dùng macro ( không cần tạo thêm cột phụ )

Bôi đen vùng cần sắp xếp , xong rồi ấn tổ hợp phím ctrl D
Mã:
Sub sort()    
    Dim i As Long, j As Long, mycell As Range
    Dim tmparr(), item, arr(), TG
        tmparr = Selection.Value
        ReDim arr(1 To UBound(tmparr, 1), 1 To 2)
        If Not IsArray(tmparr) Then Exit Sub
        For Each item In tmparr
            If Len(item) Then
                i = i + 1
                arr(i, 1) = Left(item, InStr(item, "-") - 1)
                arr(i, 2) = Val(Right(item, Len(item) - InStr(item, "-")))
            End If
        Next
        For i = 1 To UBound(arr, 1)
            For j = i + 1 To UBound(arr, 1)
                If arr(j, 2) < arr(i, 2) Then
                    TG = arr(i, 2): arr(i, 2) = arr(j, 2): arr(j, 2) = TG
                    TG = arr(i, 1): arr(i, 1) = arr(j, 1): arr(j, 1) = TG
                End If
            Next
        Next
        i = 0
        Selection.ClearContents
        For Each mycell In Selection
            i = i + 1
            mycell = arr(i, 1) & "-" & arr(i, 2)
        Next

End Sub
.
file tham khảo đính kèm
 
Lần chỉnh sửa cuối:
hix nhìn phức tạp quá bạn oi, sao không dùng macro như bài #10

thì do em hổng biết code nên với khổ vầy đó, thực ra không phức tạp cho lắm, chẳng qua nhìn vào bảng tính thì thao tác hơi nhiều thôi, dùng code thì cho chạy là được, nhưng em không hiểu bản chất code viết ý nghĩa như thế nào...!
 
thì do em hổng biết code nên với khổ vầy đó, thực ra không phức tạp cho lắm, chẳng qua nhìn vào bảng tính thì thao tác hơi nhiều thôi, dùng code thì cho chạy là được, nhưng em không hiểu bản chất code viết ý nghĩa như thế nào...!

Bản chất của code ý nghĩa là gì ( khó ghê )?
Theo mình code (VBA) là ngôn ngữ để mình diễn đạt giải thuật(ý tưởng ..) của mình cho excel hiểu ---> từ đó excel sẽ phân tích và thực hiện theo ý đồ của người lập trình,

Giống như bạn record marco sẽ lưu lại các thao tác của bạn đã làm --> các thao tác đó được mã hoá dưới code,( ngôn ngữ lập trình ..)

Mình hiểu như vậy không biết có đúng không nhj ?
 
Bài này dùng cột phụ nhé
Công thức trong cột phụ
Mã:
=LEFT(A4,FIND("-",A4))&REPT(1,RIGHT(A4,LEN(A4)-FIND("-",A4)))
Giờ Data > Sort bảng theo cột phụ bình thường
Công thức cho cột phụ có thể là thế này cũng được (nếu cần thiết thì điều chỉnh số 2 và định dạng "00" cho phù hợp với thực tế):
Mã:
=LEFT(A4,FIND("-",A4))&TEXT(MID(A4,FIND("-",A4)+1,[COLOR=#ff0000]2[/COLOR]),[COLOR=#0000cd]"00"[/COLOR])
 
Với bài này, ban đầu Dhn46 cũng khá bỡ ngỡ nhưng xin chia sẽ 1 chút: khi tìm hiểu dhn46 thấy nếu dùng Coutif(...,">"...) thì thấy ngay ra vấn đề => nếu biến đổi phần sau dấu "-" để có kết quả countif(..) hiểu thì việc sắp xếp sẽ thỏa, cái này cũng rất hay khi kết hợp trích lọc duy nhất có sắp xếp
Không hiểu sao bé nguyencanh160890 làm không ra?
 

File đính kèm

Với bài này, ban đầu Dhn46 cũng khá bỡ ngỡ nhưng xin chia sẽ 1 chút: khi tìm hiểu dhn46 thấy nếu dùng Coutif(...,">"...) thì thấy ngay ra vấn đề => nếu biến đổi phần sau dấu "-" để có kết quả countif(..) hiểu thì việc sắp xếp sẽ thỏa, cái này cũng rất hay khi kết hợp trích lọc duy nhất có sắp xếp
Không hiểu sao bé nguyencanh160890 làm không ra?

em làm ra rồi theo gợi ý của anh à,(ra rồi mà) à còn vụ này có người đố em , em loay hoay suốt 2 tiếng buổi trưa mà chưa ra, nhưng dùng hàm không ra mà phải làm 2 cột phụ mới ra, ví dụ 123hv13/5-111241 kết quả bằng 4
p/s đếm số 1 sau dấu "-". đau đầu quá...em làm công thức báo lỗi tùm lum.
 
thì do em hổng biết code nên với khổ vầy đó, thực ra không phức tạp cho lắm, chẳng qua nhìn vào bảng tính thì thao tác hơi nhiều thôi, dùng code thì cho chạy là được, nhưng em không hiểu bản chất code viết ý nghĩa như thế nào...!
Bài này theo mình thì dùng 2 cột phụ
Côt thứ nhất tách lấy 3 ký tự đầu
Cột thứ 2 lấy số nằm sau dấu "-"
Sau đó Sort 1 phát là xong
 
em làm ra rồi theo gợi ý của anh à,(ra rồi mà) à còn vụ này có người đố em , em loay hoay suốt 2 tiếng buổi trưa mà chưa ra, nhưng dùng hàm không ra mà phải làm 2 cột phụ mới ra, ví dụ 123hv13/5-111241 kết quả bằng 4
p/s đếm số 1 sau dấu "-". đau đầu quá...em làm công thức báo lỗi tùm lum.
Giả sử A1 là 111241, công thức sẽ là:
Mã:
=LEN(A1)-LEN(SUBSTITUTE(A1,1,REPT("",100)))
Anh nghĩ em tách được 111241 từ chuỗi đã cho.
 
Web KT

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

Back
Top Bottom