cách sắp xếp theo một cột cho sẵn

  • Thread starter Thread starter mipug
  • Ngày gửi Ngày gửi
Liên hệ QC

mipug

Thành viên mới
Tham gia
16/12/07
Bài viết
9
Được thích
0
Cho tớ hỏi: VD tớ có sẵn 2 cột là:
Cột 1: A H P G E I O
Cột 2: B A E G P O I H
Ở đây với giả định là số chi tiết trong cột 1 luôn có ở cột 2 (cột 2 chỉ có thể nhiều hơn hoặc bằng cột 1). Bây giờ tớ muốn sắp xếp cột 2 sao cho thứ tự giống cột 1 (giả định tiếp là: cột 1 ko thể thay đổi đc thứ tự nhé ) và những chi tiết ở cột 2 có và cột 1 ko có sẽ nằm ở phía dưới. Vì tính chất công việc nên tớ cần có công thức nào có thể làm thế đc ko?Rất mong sự giúp đỡ của mọi người. /-*+/
Chú ý: ở đây là tớ muốn hỏi cách sắp xếp theo một cột có sẵn... Còn nếu mọi người hướng dẫn theo cách sx tăng dần hoặc giảm dần ở hai cột thì ko phải nhé... Hix, rắc rối thế đấy...-+*/
 
Hỏi thêm bạn là dữ liệu trong một cột có trùng nhau không bạn? Nếu trùng thì ...hơi khó đấy!
 
Xếp cột 'B' theo cột 'A' tại cột 'D'

PHP:
Option Explicit:            Option Base 1
Dim lRow0 As Long, lRow9 As Long, iJ As Long

Sub SortByColumn()
 Dim Rng As Range, iZ As Long
 
 lRow0 = Range("A65432").End(xlUp).Row
 lRow9 = Range("B65432").End(xlUp).Row
 ReDim mChuan(lRow0)
 Set Rng = Range("A1:A" & lRow0)
 mChuan = Rng
 ReDim Mang1(lRow9, 2):       ReDim MangB(lRow9) As Boolean
 
 For iJ = 1 To lRow0
    For iZ = 1 To lRow9
        If mChuan(iJ, 1) = Cells(iZ, 2) And MangB(iZ) = False Then
            Mang1(iZ, 1) = iJ:        MangB(iZ) = True
            Mang1(iZ, 2) = mChuan(iJ, 1):       Exit For '**Moi Them' 
        End If
    Next iZ
 Next iJ
 For iZ = 1 To lRow9
    If MangB(iZ) = False Then
9        Mang1(iZ, 1) = iJ:                  iJ = iJ + 1
        Mang1(iZ, 2) = Cells(iZ, 2)
    End If
 Next iZ
 For iZ = 1 To lRow9
    For iJ = 1 To lRow9
        If Mang1(iJ, 1) = iZ Then
            Cells(iZ, 4) = Mang1(iJ, 2):        Exit For
        End If
    Next iJ
 Next iZ
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
oh, bác SA_DQ hình như nó (cột D) cắt bớt dữ liệu thì phải - ko có giá trị B ở cột D nữa - theo tiêu chí thì cái này xếp dưới cùng
.
 
(ảm ơn TigerTiger nhiều nha!

Đúng tối qua vội chưa coi kỹ khi test;
Cách khắc phục: Đổi thứ tự trong dòng lệnh số 9

Trên bài mình đã đổi rồi; Mong các bạn tha thứ lỗi này nha!

Xin cảm ơn mọi người & lần nữa bài tỏ lòng cảm ơn đến với TigerTiger!!
}}}}}
Mình còn phát hiện ra một lỗi nữa & sửa xong;
Thêm dòng lệnh Exit for vô cụm vòng lặp đầu!
 
Lần chỉnh sửa cuối:
Cái trò này dùng công thức cũng ko phải là khó lắm:
1> Do bạn muốn lấy cột 1 làm chuẩn, vậy tất nhiên việc đầu tiên bạn phải đánh số thứ tự cho cột 1 này rồi...
2> Dùng công thức dò tìm từng em trong cột 2 so với cột 1.. Nếu có thì lấy số thứ tự tương ứng với cột 1, nếu ko có thì cho đại nó 1 số nào đó (số thật lớn cho chắc)
3> Việc cuối cùng là Sort tăng dần cột 2...
Tuy nhiên có 1 chuyện cần phải hỏi cho rõ: trong từng cột có dử liệu trùng ko? Nếu có trùng thì bạn cho biết tiêu chí sắp xếp sẽ như thế nào? Còn như ko trùng thì làm theo cách của tôi là xong
Mến
ANH TUẤN
 
/-*+/ Rất cám ơn các bạn... cách làm của bạn SA_DQ đúng ý mình.
Thêm vào nữa là: trong mỗi cột ko có dữ liệu trùng nhau...
À, muốn hỏi bạn anhtuan1066: là Dùng công thức dò tìm từng em trong cột 2 so với cột 1.. Nếu có thì lấy số thứ tự tương ứng với cột 1, nếu ko có thì cho đại nó 1 số nào đó (số thật lớn cho chắc)
>>>cụ tỉ công thức là ntn nhi??
 
chao mipug tôi nghĩ để sắp xếp cột 2 theo cột 1 bạn có thể dùng cách khác đơn giản hơn nhiều.
B1. bạn vào excel option/popular/edit custom list (excle 2007) trong mục import chọn cột thứ nhất.
B2.Bạn chọn vùng cần sắp xếp/chọn data/sort/ chọn cột sắp xếp là cột 2. Trong mục order chọn custom list chọn thứ tự như cột 1
Chúc bạn thành công
 
Web KT

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

Back
Top Bottom