doi_trai_co_don
Thành viên chính thức
- Tham gia
- 27/1/07
- Bài viết
- 52
- Được thích
- 5
Bạn xem thế này có đúng ý bạn khôngdoi_trai_co_don đã viết:Thú thực tôi không biết phải đặt chủ đề như thế nào nữa mong mọi người đọc File kèm theo và giúp đỡ tôi. Tất cả tôi đã nói ở trong File.
Xin cảm ơn nhiều.
doi_trai_co_don đã viết:Cảm ơn thong_xanh2003, nhưng mình cần SL sắp xếp như File của mình cơ (Không có ô trống ở trên). Vì hiện tại mình cũng đang làm như bạn. Bạn có cách nào khác không hoặc bằng VBA cũng được
Option Explicit: Option Base 1
[b]Sub XepCot()[/b]
On Error Resume Next
Dim lRow As Long, iJ As Long, iZ As Long
Dim bDem As Byte, ViTri As Byte, NoiChep As Byte
Dim LoaiOng As String
Sheets("Sheet1").Select: lRow = Range("A65432").End(xlUp).Row
Range("C1:O" & lRow).ClearContents
Range("A1:A" & lRow).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ReDim LuuKT(lRow): NoiChep = 2
For iJ = 2 To lRow + 1
ViTri = InStr(Cells(iJ, 1), "-")
If Left(Cells(iJ, 1), ViTri - 1) <> LoaiOng Then
If LoaiOng <> "" Then
NoiChep = NoiChep + 1
Cells(1, NoiChep) = LoaiOng
For iZ = 1 To bDem
Cells(iZ + 1, NoiChep) = LuuKT(iZ)
Next iZ
End If
ReDim LuuKT(lRow): bDem = 1
LoaiOng = Left(Cells(iJ, 1), ViTri - 1)
LuuKT(1) = Mid(Cells(iJ, 1), ViTri + 1, 6)
Else
bDem = 1 + bDem
LuuKT(bDem) = Mid(Cells(iJ, 1), ViTri + 1, 6)
End If
Next iJ
[b]
End Sub
[/b]
bạn doitrai có hỏi mình thêm về điều này.Hôm trước tôi có hỏi trên 4rum về Copy SL. Bạn có cho
mình công thức. Nhưng bây giờ mình có thêm SL là cần tăng
thêm dòng thì mình làm không được. File bạn cho mình chỉ
có 14 dòng mà SL mình có rất nhiều khoảng 2-300 dòng. Bạn
chỉ cho mình nhé.
doi_trai_co_don đã viết:Cảm ơn thong_xanh2003, nhưng mình cần SL sắp xếp như File của mình cơ (Không có ô trống ở trên). Vì hiện tại mình cũng đang làm như bạn. Bạn có cách nào khác không hoặc bằng VBA cũng được
Function Dodai(Phi As String, MangOng As Range, MangDai As Range, So As Integer) As Integer
On Error Resume Next
Dim i As Integer, i1 As Integer
Dim Temp As String
If MangOng.Rows.Count <> MangDai.Rows.Count Then Exit Function
If MangOng.Rows.Count = 0 Then Exit Function
If MangOng.Columns.Count <> 1 Or MangDai.Columns.Count <> 1 Then Exit Function
If WorksheetFunction.CountIf(MangOng, Phi & "*") < So Then Exit Function
For i = 1 To MangOng.Rows.Count
If Left$(MangOng(i), 2) = Phi Then
i1 = i1 + 1
If i1 = So Then
Dodai = MangDai(i)
Exit For
End If: End If: Next
End Function