minhsondaklak
Thành viên mới
- Tham gia
- 21/11/07
- Bài viết
- 29
- Được thích
- 41
Nhờ các Huynh chỉ giúp thuộc tính End() của Range cho ta cái gì vậy?
'Find the last used cell, before a blank in a Column:
'Tìm ô cuối có giá trị, - là ô trước ngay gặp ô trắng (ô kế dưới) của cột
Sub LastCellBeforeBlankInColumn()
Range("A1").End(xldown).Select
End Sub
'Find the very last used cell in a Column:'Tìm ô cuối có giá trị của cột
Sub LastCellInColumn()
Range("A65536").End(xlup).Select
End Sub
'Find the last cell, before a blank in a Row:
'Tìm ô cuối có giá trị, trước khi gặp ô trắng (ô kế dưới) của hàng
Sub LastCellBeforeBlankInRow()
Range("A1").End(xlToRight).Select
End Sub
'Find the very last used cell in a Row:
'Tìm ô cuối có giá trị của Hàng
Sub LastCellInRow()
Range("IV1").End(xlToLeft).Select
End Sub
'Đây là ví dụ mở rộng tìm ô cuối có giá trị của sheet
'Find the very last used cell on a Worksheet:
'Tìm ô cuối có giá trị của Sheet
Sub Demo()
Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Select
End Sub
'sưu tầm code từ Internet _ giải thích vietnamese là viết thêm bởi tigertiger
oh, đúng rui, bạn nắm nhanh về đề wa, tigertiger đã thử lệnh của bạn vào lun rui thấy kết quả chính xác lun (xem trong file gửi kèm)minhsondaklak đã viết:Xin cám ơn các Huynh !
Theo chỉ dẫn của các Huynh, mình đã thử lại và ghi nhận như sau:
Giã sử trên Sheet có nhập 3 vùng dữ liệu rời rạc, gồm: A5:A10 , A15:A16 và C20:C21
'Ô dưới cùng - có dữ liệu, thuộc vùng (liên tục) có chứa ô "A8":
MsgBox Range("A8").End(xlDown).Address 'Trả về $A$10
'Ô trên cùng - có dữ liệu, thuộc vùng (liên tục) có chứa ô "A8":
MsgBox Range("A8").End(xlUp).Address 'Trả về $A$5
'Ô trên cùng - có dữ liệu, thuộc vùng (liên tục) có chứa ô A65536:
MsgBox Range("A65536").End(xlUp).Address 'Trả về $A$16
'Ô cuối trong Sheet có chứa dữ liệu:
MsgBox Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Address 'Trả về $C$21
Nhờ Huynh Tigertiger xem lại giúp: mình ghi nhận như trên có gì sai, Huynh chỉ thêm.
Đương nhiên rồi. Thunghi đã đưa các ví dụ rất cụ thể rồi.minhsondaklak đã viết:Mình thấy End() có liên quan đến "vùng dữ liệu liên tục".
End(xlDown), End(xlUp), End(xlToRight), End(xlToLeft) giúp chúng ta xác định được ô cuối cùng hoặc đầu tiên có dữ liệu trong một cột hoặc 1 dòng. Nếu không kiểm soát được nó, ta không thể vận dụng được vào thực tế được.minhsondaklak đã viết:Mình thấy End() có liên quan đến "vùng dữ liệu liên tục",ThuNghi xem lại xem.
Thầy ơi, trong ví dụ trên hình như là xlDown thay vì xlUpphamduylong đã viết:Ví dụ 1: các ô A1, A2, A5, A6, A7 có dữ liệu. 4 lệnh dưới đây dời con trỏ:
Range("A1").End(xlup).Select > A2
Range("A2").End(xlup).Select > A5
Range("A5").End(xlup).Select > A7
Range("A7").End(xlup).Select > A65536
Range("A10").End(xlup).Select > A65536
Ví dụ 2: Vận dụng vào thực tế, để xác định dòng cuối cùng của dữ liệu ta viết:
dongcuoi=Range("A1").End(xlup).Row cho kết quả dongcuoi=102, kết quả này chỉ đúng khi dữ liệu nhập trong cột A liên tục.
Ví dụ 3: Một bảng tính mới tạo các tên trường ở dòng 1
dongcuoi=Range("A1").End(xlup).Row cho kết quả dongcuoi=65536, không có nghĩa là đã nhập 65536 dòng dữ liệu mà chưa nhập dữ liệu nào (A2:A65536 rổng)
Đúng là xlDown thay vì xlUp như tedaynui đã phát hiện. Tôi đã chỉnh lại trong bài 11. Cám ơn tedaynui.tedaynui đã viết:Thầy ơi, trong ví dụ trên hình như là xlDown thay vì xlUp
Sub AdvFilter()
Dim RngFilter As Range
Dim RngCriteria As Range
Dim lRow As Long, lCol As Integer
With Sheets("S3")
Range("b2000").Value = "Td"
Range("b2001").Value = "K*"
' Tạo Sheet mới để lưu dữ liệu kết quả lọc sau này:'
Sheets.Add
On Error Resume Next
Application.ActiveSheet.Name = "Filter"
Sheets("s3").Activate
lRow = Worksheets("S3").Range("A65536").End(xlUp).Row
lCol = Worksheets("S3").Range("A1").End(xlToRight).Column
With Worksheets("S3")
Set RngFilter = .Range(.Cells(1, 1), .Cells(lRow, lCol))
Set RngCriteria = Range("b2000:b2001")
End With
'" Debug.Print RngFilter.Address"
RngFilter.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=RngCriteria, _
CopyToRange:=ActiveWorkbook.Sheets("Filter").Range("A1"), unique:=False
End With
End Sub
Sub DetermineTable()
Dim rTable As Range
Set rTable = Sheet1.Range("G1").CurrentRegion
MsgBox rTable.Address, , "A"
With Sheet1
Set rTable = .Range(.Range("G2"), _
.Cells(65536, .Range("IV1").End(xlToLeft).Column).End(xlUp))
End With
MsgBox rTable.Address, , "B"
End Sub
MsgBox rTable.Address, , "B"