Tìm giá trị gần ActiveCell nhất (1 người xem)

Liên hệ QC

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

hsm.ksxd

Thành viên chính thức
Tham gia
24/8/17
Bài viết
77
Được thích
5
Giới tính
Nam
Em có dữ liệu trong cột B từ B3:B24. Em muốn tìm địa chỉ ô chứa mã HM phía trên và gần ô ActiveCell nhất thì viết code như thế nào ạ. Như ví dụ em đính kèm ô ActiveCell là B20. em muốn giá trị trả về là B15. Mong các bác giúp đỡ ạ. Nhân tiện đây cho em hỏi luôn là có cách nào để dùng vòng lặp For each lùi không ạ. Ví dụ như:
Mã:
For Each cll In range("B20:B3")
    If cll = "HM" Then MsgBox cll.Address
 Next
thì cll sẽ chạy từ B20 đến B3.
 

File đính kèm

  • HoiGPE.jpg
    HoiGPE.jpg
    59.3 KB · Đọc: 6
Em có dữ liệu trong cột B từ B3:B24. Em muốn tìm địa chỉ ô chứa mã HM phía trên và gần ô ActiveCell nhất thì viết code như thế nào ạ. Như ví dụ em đính kèm ô ActiveCell là B20. em muốn giá trị trả về là B15. Mong các bác giúp đỡ ạ. Nhân tiện đây cho em hỏi luôn là có cách nào để dùng vòng lặp For each lùi không ạ. Ví dụ như:
Mã:
For Each cll In range("B20:B3")
    If cll = "HM" Then MsgBox cll.Address
 Next
thì cll sẽ chạy từ B20 đến B3.
Bạn chạy code này:
Mã:
Sub findHM()
Set cell = [B3:B10000].Find("HM", LookIn:=xlValues, after:=ActiveCell.Offset(1), lookat:=xlWhole, searchdirection:=xlPrevious)
If Not cell Is Nothing Then MsgBox cell.Address
End Sub
 
Upvote 0
Bạn chạy code này:
Mã:
Sub findHM()
Set cell = [B3:B10000].Find("HM", LookIn:=xlValues, after:=ActiveCell.Offset(1), lookat:=xlWhole, searchdirection:=xlPrevious)
If Not cell Is Nothing Then MsgBox cell.Address
End Sub
Cảm ơn bác ạ. Thế cái vụ for each lùi có cách nào làm được không bác?
 
Upvote 0
Em có dữ liệu trong cột B từ B3:B24. Em muốn tìm địa chỉ ô chứa mã HM phía trên và gần ô ActiveCell nhất thì viết code như thế nào ạ. Như ví dụ em đính kèm ô ActiveCell là B20. em muốn giá trị trả về là B15. Mong các bác giúp đỡ ạ. Nhân tiện đây cho em hỏi luôn là có cách nào để dùng vòng lặp For each lùi không ạ. Ví dụ như:
Mã:
For Each cll In range("B20:B3")
    If cll = "HM" Then MsgBox cll.Address
 Next
thì cll sẽ chạy từ B20 đến B3.
PHP:
Public Sub GPE()
Dim Rws As Long, I As Long
Rws = Selection.Row
For I = Rws To 3 Step -1
    If Cells(I, 2).Value = "HM" Then
        MsgBox Cells(I, 2).Address, , "GPE"
        Exit For
    End If
Next I
End Sub
 
Upvote 0
Cảm ơn bác ạ. Thế cái vụ for each lùi có cách nào làm được không bác?
For lùi thì phải For = "cái dưới" to "cái trên" Step -1 chứ hổng có For Each
Ví dụ:
Mã:
  Dim i As Long
  For i = 20 To 3 Step -1
    If Cells(i, "B") = "HM" Then
      MsgBox Cells(i, "B").Address
      Exit For
    End If
  Next
 
Upvote 0
PHP:
Public Sub GPE()
Dim Rws As Long, I As Long
Rws = Selection.Row
For I = Rws To 3 Step -1
    If Cells(I, 2).Value = "HM" Then
        MsgBox Cells(I, 2).Address, , "GPE"
        Exit For
    End If
Next I
End Sub
For lùi thì phải For = "cái dưới" to "cái trên" Step -1 chứ hổng có For Each
Ví dụ:
Mã:
  Dim i As Long
  For i = 20 To 3 Step -1
    If Cells(i, "B") = "HM" Then
      MsgBox Cells(i, "B").Address
      Exit For
    End If
  Next
Cảm ơn các bác ạ. Em tưởng For each cũng lùi được như For thì hay nhỉ
 
Upvote 0
Web KT

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

Back
Top Bottom