Bạn nói cụ thể xem là tìm cái gì? Chứ với 1 chử "T" thì e rằng bị trùng rất nhiều đấyMình có 1 việc cần giúp đỡ như sau:
Làm sao để biết 1 dữ liệu đang ở địa chỉ ô nào
VD:
Ở sheet1 , tôi có chữ "T" đang ở địa chỉ G7
Lập công thức tại A1 ,A2 của sheet2 thế nào để :
A1 là địa chỉ cột (G)
A2 là địa chỉ dòng (7)
Cảm ơn
Ctrl + Shift + Enter=MAX(IF(Sheet1!$A$1:$H$20="ndu",ROW(Sheet1!$A$1:$H$20),""))
Cũng Ctrl + Shift + Enter=SUBSTITUTE(ADDRESS(1,MAX(IF(Sheet1!$A$1:$H$20="ndu", COLUMN(Sheet1!$A$1:$H$20),"")),4),1,"")
Nếu như chỉ: "Làm sao để biết 1 dữ liệu đang ở địa chỉ ô nào" thì cần gì công thức nhỉ?Mình có 1 việc cần giúp đỡ như sau:
Làm sao để biết 1 dữ liệu đang ở địa chỉ ô nào
VD:
Ở sheet1 , tôi có chữ "T" đang ở địa chỉ G7
Lập công thức tại A1 ,A2 của sheet2 thế nào để :
A1 là địa chỉ cột (G)
A2 là địa chỉ dòng (7)
Cảm ơn
Tôi không nghĩ yêu cầu của tác chỉ đơn giãn là "TÌM"... Vì thường khi ta "TÌM" xong thì bước tiếp theo là "XỬ LÝ"
Nếu như chỉ: "Làm sao để biết 1 dữ liệu đang ở địa chỉ ô nào" thì cần gì công thức nhỉ?
Bạn nhấn Ctrl+F, gọi lệnh Find của Excel ra, biểu nó tìm chữ T, và nhấn Find All, bạn sẽ biết ngay cái chữ T đang ở đâu
Sub timdiachi() On Error GoTo Loi tx = [C1].Value Sheet1.Select Cells.Find(What:=tx, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate a = ActiveCell.Address(0, 0) Sheet2.Select [A1].Value = Left(a, 1) [A2].Value = Right(a, Len(a) - 1) Loi: Exit Sub End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$1" Then Call timdiachi End If End Sub
Tại A1 bạn gõ:T chỉ là 1 ví dụ thôi , các bạn xem file sẽ rõ .
Đánh vào C1 để tìm
Tại A2 gõ:=SUBSTITUTE(ADDRESS(1,MAX(IF(Sheet1!$A$1:$H$20=$C$1, COLUMN(Sheet1!$A$1:$H$20),"")),4),1,"")
Tất cả đều phải Ctrl + Shift + Enter nhé=MAX(IF(Sheet1!$A$1:$H$20=$C$1,ROW(Sheet1!$A$1:$H$20),""))
Bạn Po_Pikachu ơi! sao bạn không làm 1 Function cho dể sử dụng? Với cú pháp là:Vậy đơn giản thì bạn dùng code sau nha! Xem file sẽ hiểu.
Để cho nó chạy tự động thì thêm vào code sau, code nằm trong Sheet2.PHP:Sub timdiachi() On Error GoTo Loi tx = [C1].Value Sheet1.Select Cells.Find(What:=tx, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ , SearchFormat:=False).Activate a = ActiveCell.Address(0, 0) Sheet2.Select [A1].Value = Left(a, 1) [A2].Value = Right(a, Len(a) - 1) Loi: Exit Sub End Sub Bạn
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$1" Then Call timdiachi End If End Sub
Cái Option này quy định rằng ta đang muốn tìm dòng hay cộtFunction Vitri (Chuoitim As String, Vung As Range, Option gì đó) As Variant
Vậy đơn giản thì bạn dùng code sau nha! Xem file sẽ hiểu.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
Call timdiachi
ElseIf Not Intersect(Target, [c3]) Is Nothing Then
GhiDiaChi Target
End If
End Sub
Sub GhiDiaChi(Tag As Range)
Dim Rng As Range, bCol As Byte
Set Rng = Sheet1.Cells.Find(What:=Tag, LookIn:=xlFormulas)
[a5] = Rng.Row
bCol = Rng.Column \ 26
[a4] = Chr(64 + (Rng.Column Mod 26))
If bCol > 0 Then [a4] = Chr(64 + bCol) & [a4]
End Sub
Bạn Po_Pikachu ơi! sao bạn không làm 1 Function cho dể sử dụng? Với cú pháp là: Cái Option này quy định rằng ta đang muốn tìm dòng hay cột Đại khái là vậy (tôi mới nghĩ, chưa làm được)
Function vitri(chuoitim As String, arr As Range, Optional tim As String = "Dong") As Variant On Error Resume Next If tim = "Dong" Then For i = arr.Row To arr.End(xlDown).Row For j = arr.Column To arr.End(xlToRight).Column If Cells(i, j).Value = chuoitim Then temp = i End If Next Next vitri = temp ElseIf tim = "Cot" Then For i = arr.Row To arr.End(xlDown).Row For j = arr.Column To arr.End(xlToRight).Column If Cells(i, j).Value = chuoitim Then For t = 1 To Len(Cells(i, j).Address(0, 0)) k = Mid(Cells(i, j).Address(0, 0), t, 1) If Not IsNumeric(k) = True Then temp = temp & k End If Next vitri = temp End If Next Next Else vitri = "Nap gia tri cuoi vao, gia tri cuoi co the la Dong hoac Cot" End If End Function
Function DiaChi(Mang As Range, StrF As String, Optional Loai As String = "") As String
Application.Volatile (False)
Dim MyCell As Range
Set MyCell = Mang.Find(StrF, MatchCase:=True, Matchbyte:=True)
If MyCell Is Nothing Then Exit Function
If UCase$(Loai) = "ROW" Then
DiaChi = MyCell.Row
Else
DiaChi = Replace(MyCell.Address, "$", "")
If UCase$(Loai) = "COL" Then DiaChi = Left(DiaChi, Len(DiaChi) - Len(Format(MyCell.Row, "0")))
End If
End Function
Function DiaChi(Mang As Range, StrF As String, Optional Loai As String = "") As String Application.Volatile (False) Dim MyCell As Range Set MyCell = Mang.Find(StrF, MatchCase:=True, Matchbyte:=True) If MyCell Is Nothing Then Exit Function If UCase$(Loai) = "ROW" Then DiaChi = MyCell.Row Else [COLOR=red]For i = 1 To Len(MyCell.Address(0, 0)) k = Mid(MyCell.Address(0, 0), i, 1) If Not IsNumeric(k) = True Then temp = temp & k End If Next DiaChi = temp[/COLOR] End If End Function
Không nghĩ ra ta, hàm Find khống chế được dữ liệu ở Sheet khác!?!?
Cảm ơn bác nhiều nha!
Thân.