Xin code tìm đến ô giao của hàng cuối cùng chứa dữ liệu và cột nằm khoảng gữa của vùng cột chứa dữ liệu

Liên hệ QC
Thông báo thứ nhất là dòng cuối;
Thông báo thứ 2 là cột cuối
Thông báo thứ 3 là cột đầu (Cần thẩm tra lại)

Vậy ô thuộc dòng cuối của cột giữa sẽ phải làm phép tính để tìm cột giữa
1 khi ta có dòng cuối & cột 'giữa' rồi thì xác định ô đó theo tọa độ dòng & cột thôi.
Khi chạy code có thể con trỏ chuột đi tới luôn ô đó ạ!
Không cần hiện ra thông báo ạ!
 
Cells(DongCuoi, (CotCuoi + CotDau)/2).Select
 
Thì vô hiệu hóa những dòng lệnh có lênh MsgBox đi; bằng 1 trong các cách:
Thêm nháy đơn đầu dòng lệnh;
Xóa nguyên dòng lệnh đó đi
. . . .
 
Lúc đó phải là Cells( LastRowCell, (LastColCell + Rng(1).Row)/2).Select
 
Bạn phải xem lại lệnh Msgbox Rng(1).Row đã đúng thực tế chưa. Điều này chỉ có thể xác định trên thực địa mà thôi; Code dùng vô chổ này chưa chắn đúng, như HuuThang đã nêu ở bài trên.
 
Thu
Em xin được nhờ các thầy cô giúp đỡ đoạn code tìm giao nhau của ô:
Ô đó thỏa mãn điều kiện là ô giao nhau của hàng (hàng cuối có chứa dữ liệu tính từ trên xuống) và cột, cột này nằm trong khoảng cột giữa của vùng cột có chứa dữ liệu "áng chừng nằm trong khoảng giữa của vùng cột chứa dữ liệu chứ không nhất thiết là chính xác giữa"
Cụ thể ví dụ như trên hình là ô H21: chạy code tới được luôn ô H21.
Đoạn code này có tác dụng trên một Sheet bất kỳ trong file hiện hành khi chạy code trong sheet hiện hành đó.
Em xin cảm ơn!

View attachment 243414
Thử code này. Hên xui nha
*********
Chú ý là phải xóa cái dòng có dãy số phía trên nha. Xóa hẳn dòng luôn
Mã:
Sub Tim_DongCuoi_CotGiua()

Dim dongdau As Long, sArr(), cotdau As Long, tongsocot As Long
dongdau = ActiveSheet.UsedRange.Row
cotdau = ActiveSheet.UsedRange.Column
sArr = ActiveSheet.UsedRange.Value
tongsocot = UBound(sArr, 2)
If tongsocot Mod 2 <> 0 Then tongsocot = tongsocot + 1
Cells(dongdau + UBound(sArr) - 1, tongsocot / 2 + cotdau - 1).Select
MsgBox Cells(dongdau + UBound(sArr) - 1, tongsocot / 2 + cotdau - 1).Address

End Sub
 
Thu

Thử code này. Hên xui nha
*********
Chú ý là phải xóa cái dòng có dãy số phía trên nha. Xóa hẳn dòng luôn
Mã:
Sub Tim_DongCuoi_CotGiua()

Dim dongdau As Long, sArr(), cotdau As Long, tongsocot As Long
dongdau = ActiveSheet.UsedRange.Row
cotdau = ActiveSheet.UsedRange.Column
sArr = ActiveSheet.UsedRange.Value
tongsocot = UBound(sArr, 2)
If tongsocot Mod 2 <> 0 Then tongsocot = tongsocot + 1
Cells(dongdau + UBound(sArr) - 1, tongsocot / 2 + cotdau - 1).Select
MsgBox Cells(dongdau + UBound(sArr) - 1, tongsocot / 2 + cotdau - 1).Address

End Sub
Em cảm ơn thầy!
Nhờ Thầy xem giúp em xem sao nó đến tận dòng 65536 vậy ạ!

NBV.png
 

File đính kèm

  • Thanh toan .xls
    1.7 MB · Đọc: 4
Em cảm ơn thầy!
Nhờ Thầy xem giúp em xem sao nó đến tận dòng 65536 vậy ạ!

View attachment 243434
Phần này bạn phải tự xử lý thôi. Vốn file của bạn nó là vậy mà. Ctrl+End thì nó đã chạy tuốt tới dòng cuối rồi, nên code cũng sẽ tìm đúng dòng đó. Lỗi này mình cũng bị và bó tay với nó. Mình chỉ biết tạo sheet trắng mới rồi copy dữ liệu sang thôi bạn ạ. Hy vọng có ai đó giúp được lỗi này cho mình học luôn. Excel đôi lúc nó điên điên sao ấy. Hức
 
Tìm dòng cuối hay cột cuối có dữ liệu là phải xài phương thức FIND()
Vấn đề còn lại ở đây là ô đầu tiên chứa dữ liệu là khó làm bằng VBA, mà phải xem trang tính trên thực tế mà thôi.
 
Tìm dòng cuối hay cột cuối có dữ liệu là phải xài phương thức FIND()
Vấn đề còn lại ở đây là ô đầu tiên chứa dữ liệu là khó làm bằng VBA, mà phải xem trang tính trên thực tế mà thôi.
Phần này bạn phải tự xử lý thôi. Vốn file của bạn nó là vậy mà. Ctrl+End thì nó đã chạy tuốt tới dòng cuối rồi, nên code cũng sẽ tìm đúng dòng đó. Lỗi này mình cũng bị và bó tay với nó. Mình chỉ biết tạo sheet trắng mới rồi copy dữ liệu sang thôi bạn ạ. Hy vọng có ai đó giúp được lỗi này cho mình học luôn. Excel đôi lúc nó điên điên sao ấy. Hức
Em cảm ơn thầy
 
Bạn dùng code này
Mã:
Sub ABC()
Dim Trai As Range, Phai As Range, Duoi As Range
Set Phai = Cells.Find(what:="*", After:=Cells(1, 1), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, SearchFormat:=False)
If Phai Is Nothing Then
    MsgBox "Sheet nay khong co du lieu"
Else
    Set Duoi = Cells.Find(what:="*", After:=Cells(1, 1), SearchOrder:=xlByRows, SearchDirection:=xlPrevious, SearchFormat:=False)
    Set Trai = Cells.Find(what:="*", After:=Phai, SearchOrder:=xlByColumns, SearchDirection:=xlNext, SearchFormat:=False)
    Cells(Duoi.Row, (Trai.Column + Phai.Column) / 2).Select
End If
End Sub
 
Bạn dùng code này
Mã:
Sub ABC()
Dim Trai As Range, Phai As Range, Duoi As Range
Set Phai = Cells.Find(what:="*", After:=Cells(1, 1), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, SearchFormat:=False)
If Phai Is Nothing Then
    MsgBox "Sheet nay khong co du lieu"
Else
    Set Duoi = Cells.Find(what:="*", After:=Cells(1, 1), SearchOrder:=xlByRows, SearchDirection:=xlPrevious, SearchFormat:=False)
    Set Trai = Cells.Find(what:="*", After:=Phai, SearchOrder:=xlByColumns, SearchDirection:=xlNext, SearchFormat:=False)
    Cells(Duoi.Row, (Trai.Column + Phai.Column) / 2).Select
End If
End Sub
Vâng, em cảm ơn thầy!
 
Web KT
Back
Top Bottom