Các cao nhân giúp em tìm dòng cuối cùng mà k chứa dữ liệu bằng code vba (3 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

Mimi#

Thành viên mới
Tham gia
15/11/23
Bài viết
9
Được thích
0
Em muốn tìm câu lệnh chỉ ra đc dòng cuối cùng không chứa dữ liệu của sheet ạ, tức là đáy bảng ạ ai giúp em với
 
Nếu không xác định cột nào có ô chưa dữ liệu cuối cùng:
Mã:
ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row + 1
Không ạ, ý em muốn hỏi về việc câu lệnh có thể tìm đuợc dòng cuối cùng của sheet luôn ạ , và đương nhiên dòng cuối sheet k hay có chứa dữ liệu đều được. Bởi em muốn tạo vòng lặp for next từ 1 đến vô cùng ạ
 
Upvote 0
Không ạ, ý em muốn hỏi về việc câu lệnh có thể tìm đuợc dòng cuối cùng của sheet luôn ạ , và đương nhiên dòng cuối sheet k hay có chứa dữ liệu đều được. Bởi em muốn tạo vòng lặp for next từ 1 đến vô cùng ạ
Đoán mò thế lày: range("anh:anh").rows.count
 
Upvote 0
Chủ bài đăng: Đọc bài tổng quan về phương thức FIND() được treo trên đầu của đề mục "Lập trình. . ."
 
Upvote 0
Sao quý vị đoán hay thật. Quả là cao nhơn. Thường nhơn như tôi thì hiểu "dòng cuối cùng không chứa dữ liệu của sheet, tức là đáy bảng" kiểu khác:
dongCuoi = rows.count
code dò ngược lên trên cho đến khi gặp dòng trống

code dò ngược:
For dongCuoi = dongCuoi To 1 Step -1
IF Application.COUNTA(Range(dongCuoi & ":" & dongCuoi)) <= 0 Then Exit For
Next
If dongCuoi <= 0 Then ' no bloody good
 
Lần chỉnh sửa cuối:
Upvote 0
@Mimi# Bạn có thể tham khảo sử dụng phương thức Find của Range

(Đối số xlFormulas và xlValues tương đương tìm có công thức và giá trị)


JavaScript:
Function LastCell(Optional sheet As Worksheet) As Range
  On Error Resume Next
  If sheet Is Nothing Then Set sheet = ActiveSheet
  Set LastCell = sheet.Cells.Find("*", After:=sheet.Cells(1, 1), LookIn:=xlFormulas, LookAt:=xlWhole, SearchDirection:=xlPrevious, SearchOrder:=xlByRows)
  On Error GoTo 0
End Function
 
Upvote 0
Không ạ, ý em muốn hỏi về việc câu lệnh có thể tìm đuợc dòng cuối cùng của sheet luôn ạ , và đương nhiên dòng cuối sheet k hay có chứa dữ liệu đều được. Bởi em muốn tạo vòng lặp for next từ 1 đến vô cùng ạ
dòng cuối

= Rows.Count

= 1048576

Nếu bạn muốn tạo vòng lặp:

For i=1 to Rows.Count

Thì sáng mai quay lại đây nói chuyện tiếp nhé.
 
Upvote 0
dòng cuối

= Rows.Count

= 1048576

Nếu bạn muốn tạo vòng lặp:

For i=1 to Rows.Count

Thì sáng mai quay lại đây nói chuyện tiếp nhé.

dòng cuối

= Rows.Count

= 1048576

Nếu bạn muốn tạo vòng lặp:

For i=1 to Rows.Count

Thì sáng mai quay lại đây nói chuyện tiếp nhé.
Vâng thì đúng là em đang tạo for i=1 to rows.count ạ , làm vậy có hợp lí và ổn không mà bạn nói chuỵn căng quá
 
Upvote 0
Vâng thì đúng là em đang tạo for i=1 to rows.count ạ , làm vậy có hợp lí và ổn không mà bạn nói chuỵn căng quá
Ahh, quay lại rồi à bạn, máy xử lý xong chưa?
Mình nói bạn "sáng mai quay lại", có ý đùa thôi, ý là để biến i loop từ 1 đến 1048576 thì mất cả ngày đó
Dĩ nhiên mình hiểu là biến i chắc chắn không loop hết đến 1 triệu, và sẽ có điều kiện gì đó gài bên trong để thoát ra khoải vòng.
Nếu có thể, thì bạn hãy share file mẫu và giải thích bạn cần làm gì và kết quả muốn có là gì nhé.
 
Upvote 0
Ahh, quay lại rồi à bạn, máy xử lý xong chưa?
Mình nói bạn "sáng mai quay lại", có ý đùa thôi, ý là để biến i loop từ 1 đến 1048576 thì mất cả ngày đó
Dĩ nhiên mình hiểu là biến i chắc chắn không loop hết đến 1 triệu, và sẽ có điều kiện gì đó gài bên trong để thoát ra khoải vòng.
Nếu có thể, thì bạn hãy share file mẫu và giải thích bạn cần làm gì và kết quả muốn có là gì nhé.
Vâng ạ cám ơn bạn nhièo nha mình xử lí được rồi , mình có cho điều kiện để thoát vòng lặp hihi
 
Lần chỉnh sửa cuối:
Upvote 0
bác nào cao kiến chỉ giúp em. Để tìm dòng cuối trong 1 bảng (table) mà có chứa giá trị(không tính dòng rỗng) thì mình dùng cú pháp sao ạ? em cám ơn
 
Upvote 0
Sửa mã ở trên sheet.Cells thành Table.DataBodyRange
 
Upvote 0
Em muốn tìm câu lệnh chỉ ra đc dòng cuối cùng không chứa dữ liệu của sheet ạ, tức là đáy bảng ạ ai giúp em với
Bạn dùng Hàm này .

Function LastEmptyRowInRange(rng As Range) As Long
On Error Resume Next
LastEmptyRowInRange = rng.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
If Err.Number <> 0 Then LastEmptyRowInRange = 1
End Function


trên excel dùng công thức này =LastEmptyRowInRange(A1:A10000) ( Ví dụ A1:A10000 tự thay đổi )
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn dùng Hàm này .



trên excel dùng công thức này =LastEmptyRowInRange(A1:A10000) ( Ví dụ A1:A10000 tự thay đổi )
Dùng Find method để tìm kiếm từ dưới lên đôi khi kết quả không đúng. Ví dụ: giả sử ô cuối cùng là V1000.
Tìm kiếm lần đầu thì OK.
Sau đó, delete ô này đi.
Khi tìm kiếm lại thì kết quả trả về vẫn là ô V1000 (do delete nhưng dấu vết vẫn còn)
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Dùng Find method để tìm kiếm từ dưới lên đôi khi kết quả không đúng. Ví dụ: giả sử ô cuối cùng là V1000.
Tìm kiếm lần đầu thì OK.
Sau đó, delete ô này đi.
Khi tìm kiếm lại thì kết quả trả về vẫn là ô V1000 (do delete nhưng dấu vết vẫn còn)
Mình thử Delete nó vẫn đúng
 
Upvote 0
Web KT

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

Back
Top Bottom