Hỏi về code tìm dòng cuối cùng! (1 người xem)

Liên hệ QC

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

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
em muốn tìm dòng cuối cùng của tất cả cột, Nhưng giờ em có nhiều Sub mỗi lần phải tạo như này:
Dim lr As Long
lr = Range("F65535").End(xlUp).row
Range("G3:J3").Copy
Range("G3:J" & lr).PasteSpecial Paste:=xlPasteFormulas
---------------------
>> Hay là có cách khác không ạ!
 
Lần chỉnh sửa cuối:
em muốn tìm dòng cuối cùng của tất cả cột, Nhưng giờ em có nhiều Sub mỗi lần phải tạo như này:
Dim lr As Long
lr = Range("F65535").End(xlUp).row
Range("G3:J3").Copy
Range("G3:J" & lr).PasteSpecial Paste:=xlPasteFormulas
---------------------
>> Hay là có cách khác không ạ!
tham khảo cái này nhé bạn
Mã:
MsgBox Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
 
Upvote 0
tham khảo cái này nhé bạn
Mã:
MsgBox Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
à! ý em là muốn tạo 1 funciton thay code này "lr = Range("F65535").End(xlUp).row". Nhưng em muốn code tìm dòng cuối của tất cả các cột trong bảng
 
Upvote 0
Function LastRow(byVal Col As String, Optional Sh As WorkSheet = Nothing) As Long
If Sh Is Nothing Then
LastRow = Cells(Rows.Count, Col).End(xlUp).Row
Else
LastRow = Sh.Cells(Rows.Count, Col).End(xlUp).Row
End If
End Function

Range("G3:J" & LastRow("F")).PasteSpecial Paste:=xlPasteFormulas
 
Upvote 0
Function LastRow(byVal Col As String, Optional Sh As WorkSheet = Nothing) As Long
If Sh Is Nothing Then
LastRow = Cells(Rows.Count, Col).End(xlUp).Row
Else
LastRow = Sh.Cells(Rows.Count, Col).End(xlUp).Row
End If
End Function

Range("G3:J" & LastRow("F")).PasteSpecial Paste:=xlPasteFormulas
Vẫn báo lỗi anh à! file đính kèm dưới anh xem em làm đúng chưa ạ
 

File đính kèm

Upvote 0
Vâng em hiểu rồi! cảm ơn anh nhiều
Ối giời ơi! kinh đấy. tui chả hiểu gì cả :(
đề bài là thế này mà nhỉ
"em muốn tìm dòng cuối cùng của tất cả cột"
nhưng tại sao lại tìm trong cột F
-------------------------------------
chắc là mình không đọc kỹ đề nên hướng giải sai mất :D
lr = Range("F65535").End(xlUp).row
 
Upvote 0
Ối giời ơi! kinh đấy. tui chả hiểu gì cả :(
đề bài là thế này mà nhỉ
"em muốn tìm dòng cuối cùng của tất cả cột"
nhưng tại sao lại tìm trong cột F
-------------------------------------
chắc là mình không đọc kỹ đề nên hướng giải sai mất :D
lr = Range("F65535").End(xlUp).row
Như này là vẫn bị phụ thuộc vào Range("G3:J" & LastRow("F")).PasteSpecial Paste:=xlPasteFormulas à anh! anh chỉnh lại dùm e với ạ!
 
Upvote 0
Như này là vẫn bị phụ thuộc vào Range("G3:J" & LastRow("F")).PasteSpecial Paste:=xlPasteFormulas à anh! anh chỉnh lại dùm e với ạ!
Bạn thử cách này xem sao
PHP:
Sub Copydulieu()
    Dim Rng As Range, R As Long
Set Rng = Range("G3:J3")
R = LastRowRange(Rng)
'MsgBox J
Range("G3:J3").Copy
Range("G3:J" & R).PasteSpecial Paste:=xlPasteFormulas
End Sub
PHP:
Function LastRowRange(ByVal Vungtieude As Range) As Long
    Dim I As Long, J As Long, N As Long, Dongcuoi As Long
    For Each Cll In Vungtieude
        J = Cll.Column:    I = Rows.Count
        N = Cells(I, J).End(3).Row
        If Dongcuoi < N Then Dongcuoi = N
    Next
    LastRowRange = Dongcuoi
End Function
 
Upvote 0
Bạn thử cách này xem sao
PHP:
Sub Copydulieu()
    Dim Rng As Range, R As Long
Set Rng = Range("G3:J3")
R = LastRowRange(Rng)
'MsgBox J
Range("G3:J3").Copy
Range("G3:J" & R).PasteSpecial Paste:=xlPasteFormulas
End Sub
PHP:
Function LastRowRange(ByVal Vungtieude As Range) As Long
    Dim I As Long, J As Long, N As Long, Dongcuoi As Long
    For Each Cll In Vungtieude
        J = Cll.Column:    I = Rows.Count
        N = Cells(I, J).End(3).Row
        If Dongcuoi < N Then Dongcuoi = N
    Next
    LastRowRange = Dongcuoi
End Function
Function này LastRowRange không sài được trực tiếp như này à anh!
Range("B3:C3").Copy
Range("B4:C" & LastRowRange).PasteSpecial Paste:=xlPasteFormulas
Mà vẫn phải gán định dạng
Dim Rng As Range
R As Long; Set Rng = Range("G3:J3")
R = LastRowRange(Rng).
Nếu như này thì làm như này vẫn hơi dài anh ạ!
Dim lr As Long
lr = Range("E65000").End(xlUp).row
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Function LastRowRange(ByVal Vungtieude As Range) As Long
    Dim I As Long, J As Long, N As Long, Dongcuoi As Long
    For Each Cll In Vungtieude
        J = Cll.Column:    I = Rows.Count
        N = Cells(I, J).End(3).Row
        If Dongcuoi < N Then Dongcuoi = N
    Next
    LastRowRange = Dongcuoi
End Function

For i = Vungtieude.Column to Vungtieude.Column + Vungtieude.Columns.Count - 1
Dongcuoi = Application.Max(Dongcuoi, Cells(Rows.Count, i).End(3).Row)
Next i

Tôi chỉ chỉnh code theo thuật toán của bạn thôi.
Còn việc thuật toán có đáp ứng được gì thì tôi không biết.
 
Upvote 0
Em hỏi thêm ạ!
Mục này đổi thành Function như nào anh nhỉ :
VD
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Code
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

Em muốn Function dùng như này:
Sub GPC ()

GetSpeed = true
Code
GetSpeed = False
End sub
 
Upvote 0
For i = Vungtieude.Column to Vungtieude.Column + Vungtieude.Columns.Count - 1
Dongcuoi = Application.Max(Dongcuoi, Cells(Rows.Count, i).End(3).Row)
Next i

Tôi chỉ chỉnh code theo thuật toán của bạn thôi.
Còn việc thuật toán có đáp ứng được gì thì tôi không biết.
Vẫn báo lỗi! file đính kèm dưới anh xem hộ em làm đúng chưa với ạ.
em thay vào vẫn ko dc:
For i = Vungtieude.Column to Vungtieude.Column + Vungtieude.Columns.Count - 1
Dongcuoi = Application.Max(Dongcuoi, Cells(Rows.Count, i).End(3).Row)
Next i
 

File đính kèm

Upvote 0
Vẫn báo lỗi! file đính kèm dưới anh xem hộ em làm đúng chưa với ạ.
em thay vào vẫn ko dc:
For i = Vungtieude.Column to Vungtieude.Column + Vungtieude.Columns.Count - 1
Dongcuoi = Application.Max(Dongcuoi, Cells(Rows.Count, i).End(3).Row)
Next i

Bạn ví dụ lại cho rõ rệt là bạn muốn gì.
Từ đầu chí cuối, chả ai hiểu bạn muốn làm gì.

tiều đề là bạn muốn tìm dòng cuối cùng. Từ "cuối cùng" nó có cái ngữ cảnh của nó. Cuối cùng của nhóm nào? nhóm ấy gồm những gì, và như thế nào thì gọi là cuối cùng.
 
Upvote 0
Bạn ví dụ lại cho rõ rệt là bạn muốn gì.
Từ đầu chí cuối, chả ai hiểu bạn muốn làm gì.

tiều đề là bạn muốn tìm dòng cuối cùng. Từ "cuối cùng" nó có cái ngữ cảnh của nó. Cuối cùng của nhóm nào? nhóm ấy gồm những gì, và như thế nào thì gọi là cuối cùng.
- Em muốn copy công thức B3:C3
- Code sẽ tự tìm 1 cột có dữ liệu nhiều nhất ( dòng cuối cùng)
sẽ copy đến đó. Mà không phải là mình tự đi tìm 1 cột có dòng nhiều dữ liệu nhất để gán so với cột đó!
 

File đính kèm

Upvote 0
Có 2 cách xác định dòng cuối cùng.
1. Xác định theo vùng. Cứ đến chỗ trống là hết vùng, không nhất thiết phải là ô cuối thật sự
2. Xác định chính xác ô cuối cùng trong vùng. Bỏ qua các khoảng trống ở giữa.
 
Upvote 0
Có 2 cách xác định dòng cuối cùng.
1. Xác định theo vùng. Cứ đến chỗ trống là hết vùng, không nhất thiết phải là ô cuối thật sự
2. Xác định chính xác ô cuối cùng trong vùng. Bỏ qua các khoảng trống ở giữa.
Em muốn cách 2 bỏ qua các ô trống tìm đếm dữ liệu cuối cùng của cột!
 
Upvote 0
Web KT

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

Back
Top Bottom