Sắp xếp dữ liệu (1 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.
 
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.

ra kết quả chuỗi 111241 này em làm được, điều em không thể làm được đó là từ chuỗi 123hv13/5-111241 đếm dùng hàm liên tục ra bằng 4, sau dấu"-" không dùng cột phụ.
khó với em thiệt.
 
ra kết quả chuỗi 111241 này em làm được, điều em không thể làm được đó là từ chuỗi 123hv13/5-111241 đếm dùng hàm liên tục ra bằng 4, sau dấu"-" không dùng cột phụ.
khó với em thiệt.
Một nè +-+-+-+, hai nè +-+-+-+, ba bốn năm ... nè :''" ...
Em lồng hàm vào.
Tách bên phải dấu "-" :
Mã:
=RIGHT(A1,LEN(A1)-FIND("-",A1))
Đưa hàm này vào công thức lúc nãy:
Mã:
=LEN(RIGHT(A1,LEN(A1)-FIND("-",A1)))-LEN(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("-",A1)),1,REPT("",100)))
 
hehe, em mới lồng hàm xong...2 hàm lúc nảy.ra rồi...p/s em sẽ chăm chỉ hơn, cảm ơn Anh giúp đỡ và chỉ bảo nhiều.
em dùng hàm này LEN(SUBSTITUTE(RIGHT(G4,6),MID(RIGHT(G4,6),4,2),"")) kết quả bằng 4
 
Chỉnh sửa lần cuối bởi điều hành viên:
hehe, em mới lồng hàm xong...2 hàm lúc nảy.ra rồi...p/s em sẽ chăm chỉ hơn, cảm ơn Anh giúp đỡ và chỉ bảo nhiều.
em dùng hàm này LEN(SUBSTITUTE(RIGHT(G4,6),MID(RIGHT(G4,6),4,2),"")) kết quả bằng 4
Sao lại dùng công thức này, nếu dùng công thức này thì thà ngồi nhẫm rồi gõ kết quả vào luôn đỡ mệt.
Sử dụng công thức tổng quát để xử lý vấn đề khác.
Công thức của em chỉ áp dụng cho chuỗi ...xxxyzx, em thay yz bất kỳ với yz<>xx thì kết quả cũng là 4.
 
Sao lại dùng công thức này, nếu dùng công thức này thì thà ngồi nhẫm rồi gõ kết quả vào luôn đỡ mệt.
Sử dụng công thức tổng quát để xử lý vấn đề khác.
Công thức của em chỉ áp dụng cho chuỗi ...xxxyzx, em thay yz bất kỳ với yz<>xx thì kết quả cũng là 4.

chuẩn Anh ạ! công thức này thay vị trí là đảo tròn mắt ngay, em hiểu 2 công thức dài, em đang tham khảo lại, sau gặp trường hợp khác sẽ sử dụng ngay.
 
Một nè +-+-+-+, hai nè +-+-+-+, ba bốn năm ... nè :''" ...
Em lồng hàm vào.
Tách bên phải dấu "-" :
Mã:
=RIGHT(A1,LEN(A1)-FIND("-",A1))
Đưa hàm này vào công thức lúc nãy:
Mã:
=LEN(RIGHT(A1,LEN(A1)-FIND("-",A1)))-LEN(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("-",A1)),1,REPT("",100)))

Sao phải thêm cái Rept chi nhỉ
=LEN(RIGHT(A1,LEN(A1)-FIND("-",A1)))-LEN(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("-",A1)),1,""))
 
ra kết quả chuỗi 111241 này em làm được, điều em không thể làm được đó là từ chuỗi 123hv13/5-111241 đếm dùng hàm liên tục ra bằng 4, sau dấu"-" không dùng cột phụ.
khó với em thiệt.
Dùng Substitute là đơn giản và dễ hiẻu nhất song có nhiều cách làm bài này, bé thma khảo 1 cách dùng hàm mảng nha:
Mã:
=SUMPRODUCT((MID(REPLACE(A1,1,FIND("-",A1),""),ROW(INDIRECT("1:"&LEN(REPLACE(A1,1,FIND("-",A1),"")))),1)="1")*1)
 
[Qdữ liệu không tài nào sort được khớp như yêu cầu, điên quá ag:=\+[/QUOTE]
Bạn cần bỏ ô Merge and Center trước khi Sắp xếp. :
Ô có chữ: Dùng công thức gì để sắp xếp ra như thế này. Chỉ giúp mình với
Nếu không muốn dùng thêm cột phụ thì khi nhập dữ liệu nên nhập theo đúng quy tắc như sau:
3 số đầu
2 số cuối
VD: 123hv13/5-3 thì nhập 123hv13/5-03
123hv13/5-13 thì nhập 123hv13/5-13
 
[Qdữ liệu không tài nào sort được khớp như yêu cầu, điên quá ag:=\+
Bạn cần bỏ ô Merge and Center trước khi Sắp xếp. :
Ô có chữ: Dùng công thức gì để sắp xếp ra như thế này. Chỉ giúp mình với
Nếu không muốn dùng thêm cột phụ thì khi nhập dữ liệu nên nhập theo đúng quy tắc như sau:
3 số đầu
2 số cuối
VD: 123hv13/5-3 thì nhập 123hv13/5-03
123hv13/5-13 thì nhập 123hv13/5-13[/QUOTE]

hihi, ra kết quả rồi mà bạn, cần gì phải thêm cột phụ đâu? bạn đọc kỹ tất cả các bài hướng dẫn của các Anh đã viết ở trên sẽ thấy ngay thôi.
chúc bạn sớm hoàn thành hoàn hảo bài tập này.thân!
 
Cám ơn các bằng hữu nhiều lắm nhưng mà kết quả cũng không giống như mình yêu cầu. Có cách nào dùng công thức để sắp xếp tự động khi thay đổi dữ liệu không các bạn. Không dùng Sort
 
Cám ơn các bằng hữu nhiều lắm nhưng mà kết quả cũng không giống như mình yêu cầu. Có cách nào dùng công thức để sắp xếp tự động khi thay đổi dữ liệu không các bạn. Không dùng Sort
File của bạn ở đâu, bạn nói không rõ lắm rất khó cho đáp án.
 
File của bạn ở đâu, bạn nói không rõ lắm rất khó cho đáp án.

File của bạn ấy ở bài #1
Không dùng sort dùng công thức ở 1 ô C4 rồi sao chép xuống.
Cứ tưởng bài này đơn giản. Yêu cầu này không dùng VBA không dùng Sort
Mình chưa giám nói là: Không làm được theo yêu cầu này
 
Lần chỉnh sửa cuối:
Cám ơn các bằng hữu nhiều lắm nhưng mà kết quả cũng không giống như mình yêu cầu. Có cách nào dùng công thức để sắp xếp tự động khi thay đổi dữ liệu không các bạn. Không dùng Sort
Được chứ, nhưng không có dữ liệu thật nên chỉ làm đúng theo dữ liệu trong file, chưa bẫy lỗi
Muốn tổng quát phải có dữ liệu thật
Thân
 

File đính kèm

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

Back
Top Bottom