Tìm dòng cuối trong bảng dữ liệu (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

phanngoctrai1981

Thành viên chính thức
Tham gia
16/4/23
Bài viết
60
Được thích
0
Anh/chi xem giúp
Hiện em muốn tìm dòng cuối trong bảng dữ liệu tính từ A1:O21 (phía dưới vẫn có dữ liệu)
Kinh mong anh/chi xem file chỉ giúp.
Em cảm ơn
 

File đính kèm

Upvote 0
Bạn định nghĩa thế nào là dòng cuối?
nếu tìm dòng cuối cho cả sheet thi em đã làm được rồi. như do yêu cầu copy dữ liệu chi lấy trong vùng từ A2:O14 và không phải lúc nào cũng là 12 vòng (có thể ít hơn) vì thế em nghĩ ra là minh phải tìm dòng cuối trong khoản đó, nhưng không biết cách làm. Nếu biết mong anh chi cho.
 
Upvote 0
nếu tìm dòng cuối cho cả sheet thi em đã làm được rồi. như do yêu cầu copy dữ liệu chi lấy trong vùng từ A2:O14 và không phải lúc nào cũng là 12 vòng (có thể ít hơn) vì thế em nghĩ ra là minh phải tìm dòng cuối trong khoản đó, nhưng không biết cách làm. Nếu biết mong anh chi cho.
Bạn có thể cho biết bạn tìm dòng cuối trong cả trang tính thì làm như thế nào không vậy, cho mình biết với?
 
Upvote 0
PHP:
Function LRow(Sh As String, Optional Opt As Byte = 1) As Variant
 Dim Rng As Range
 
 Set Rng = Cells(Opt * 10, "B").CurrentRegion
 With Sheets(Sh)
    LRow = Rng.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
End With
MsgBox LRow
End Function
 
Upvote 0
Giả dụ bạn có 3 vùng dữ liệu phân cách nhau bỡi các dòng trống
Thì cách của bạn chỉ tìm được dòng cuối chứa dữ liệu vùng cuối mà thôi.
 
Upvote 0
PHP:
Function LRow(Sh As String, Optional Opt As Byte = 1) As Variant
 Dim Rng As Range
 
 Set Rng = Cells(Opt * 10, "B").CurrentRegion
 With Sheets(Sh)
    LRow = Rng.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
End With
MsgBox LRow
End Function
Anh có thể hướng dẫn cách dùng không ạ, em thấy code nay hơi lạ (chưa biết dùng)
 
Upvote 0
Anh có thể hướng dẫn cách dùng không ạ, em thấy code nay hơi lạ (chưa biết dùng)
Vấn đề là bạn tạo ra 3 bảng dữ liệu, mổi bảng có 10.0 dòng dữ liệu & cách nhau giữa các vùng là 1 dòng
Vùng 1 [A1].resize(10,4)
Vùng 2: [A12].resize(10,5)
Vùng 3 [B23].resize(10,6)
Khi đó bạn có thể trãi nghiệm dòng cuối của mỗi vùng khác nhau
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề là bạn tạo ra 3 bảng dữ liệu, mổi bảng có 10.0 dòng dữ liệu & cách nhau giữa các vùng là 1 dòng
Vùng 1 [A1].resize(10,4)
Vùng 2: [A11].resize(10,5)
Vùng 3 [B21].resize(10,6)
Khi đó bạn có thể trãi nghiệm dòng cuối của mỗi vùng khác nhau
Ôi hay quá, em cam on Anh
 
Upvote 0
Upvote 0
Upvote 0

File đính kèm

  • 2023-07-02_23-14-59.png
    2023-07-02_23-14-59.png
    165.9 KB · Đọc: 27
  • 2023-07-02_23-24-13.png
    2023-07-02_23-24-13.png
    52.6 KB · Đọc: 23
Lần chỉnh sửa cuối:
Upvote 0
Anh/chi xem giúp
Hiện em muốn tìm dòng cuối trong bảng dữ liệu tính từ A1:O21 (phía dưới vẫn có dữ liệu)
Kinh mong anh/chi xem file chỉ giúp.
Em cảm ơn
Trong VBA range có cái thuộc tính gọi là: CurrentRegion
Nếu bạn nắm được khái niệm này thì bạn giải quyết vấn đề của bạn dễ dàng.
Nếu tại ô A2 mà bạn dùng Range("A2").CurrentRegion, có nghĩa là bạn đang tham chiếu đến 1 vùng data liên tiếp của ô A2 (nghĩa là A1:O14)
Bạn test bằng code sau, vào cửa sổ Intermediate Window (Ctrl-G) xem kết qủa là gì nhé:

PHP:
Option Explicit
Sub test()
Dim rng As Range
Set rng = Range("A2").CurrentRegion
Debug.Print rng.Rows.Count
Debug.Print rng.Address
Debug.Print rng.Cells(rng.Rows.Count, rng.Columns.Count).Address
End Sub
 
Upvote 0
Bạn đọc không kỹ câu hỏi rồi, là "ô có dữ liệu cuối" cơ.
E6 là ô không có dữ liệu.
Nếu là ô có dữ liệu cuối thì phải nói rõ là ô cuối theo cột hay theo hàng, còn nói chung chung vậy là vô nghiệm. Nhưng như bảng của thớt gửi thì ô dữ liệu cuối 99% là theo hàng.
 
Upvote 0
Như vầy thì thằng nào được tính là "ô có dữ liệu cuối"?

View attachment 292247
TTHo & TenNgày SinhĐịa chỉ
1​
DFD00Dương Đức Dũng
4/6/1961​
128/21 Lê Lai
2​
FFD00Đỗ Đức Dung
2/24/1959​
12/21 Lê Lợi
3​
FJD00Đặng Dung
1/13/1957​
128/21 Lê Thái Tông
4​
LMD00Lại Thị Mỹ Dung
5/18/1963​
128/1A Lê Dục Tông
5​
LMD01Lê Mai Dung
6/28/1965​

PHP:
Sub TimDongDuLieuCuoi()
 Dim Rng As Range, sRng As Range
 
 Set Rng = Sheets("CSDL").UsedRange
 MsgBox Rng.Address, , "Msgbox 1"
 Set sRng = Rng.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows)
 If Not sRng Is Nothing Then
    MsgBox sRng.Address, , "MsgBox 2"
 End If
 Set sRng = Rng.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns)
 If Not sRng Is Nothing Then
    MsgBox sRng.Address, , "MsgBox 3"
 End If
End Sub
 
Upvote 0

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

Back
Top Bottom