diemvuongvathuongde
Thành viên chính thức
- Tham gia
- 5/11/07
- Bài viết
- 75
- Được thích
- 2
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([C5], Target) Is Nothing Then
Dim Rng As Range, sRng As Range, MyAdd As String, fRw As Long, lRw As Long
Set Rng = Range([A1], [A65500].End(xlUp))
Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
If sRng Is Nothing Then
Target.Value = "Khong Có Giá Tri Này: " & Target.Value
Else
fRw = sRng.Row: [d5].Value = fRw
Do
Set sRng = Rng.FindNext(sRng)
If [d5].Value <> sRng.Row Then [d6].Value = sRng.Row
Loop While Not sRng Is Nothing And sRng.Row <> fRw
End If
End If
End Sub
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect([C5], Target) Is Nothing Then
Dim Rng As Range
Set Rng = Range([A2], [A65500].End(xlUp))
[d5] = Rng.Find(Target.Value).Row
[d6] = [d5] + Application.WorksheetFunction.CountIf(Rng, Target.Value) - 1
End If
End Sub
Do bạn sử dụng Match() với tham số Match_Type là 1 nên khi dữ liệu không được sắp sếp tăng dần thì kết quả sẽ không đúng. Nếu công thức thì tôi làm thế này:trong trường hợp khi nhập vào ô C5 1 giá trị không có trong A:A thì
- Kết quả của chibi không đúng
- Code của haiyen17 báo lỗi.
Nhờ 2 bạn hoàn chỉnh code nghen.
Còn minh thì dùng công thức:
d5=IF(ISNA(MATCH(C5;A:A);"Không có";MATCH(C5;A:A)
d6=IF(ISNA(MATCH(C5;A:A);"Không có";MATCH(C5;A:A;1))
=IF(COUNTIF(A:A,C5),MATCH(C5,A:A,),"Not Found")
=IF(E5="Not Found",E5,E5+COUNTIF(A:A,C5)-1)
Nếu dữ liệu không theo một quy luật nào hết thì tôi làm như thế này:Góp vui!!! hehe
Tìm vị trí của ô đầu tiên, ô cuối cùng có chứa dữ liệu tìm kiếm :
Row of Lastcell with lookup_value :
{=MAX(((A1:A100=lookup_value)*ROW(A1:A100)))} press Ctrl+Shif+Enter
Row of Firstcell with lookup_value :
{=SMALL(((A1:A100=lookup_value)*ROW(A1:A100));SUMPRODUCT(--NOT((A1:A100=lookup_value)))+1)} press Ctrl+Shif+Enter
FirstRow=MATCH(C4,A1:A100,)
LastRow=LOOKUP(2,1/(A1:A100=C4),ROW(A1:A100))