Thử code này xem:dạ nếu được nhờ anh tạo giùm em cái UDF
Function GetVal(RngText As String)
Dim Tmp As String, Clls As Range
Application.Volatile
On Error Resume Next
Tmp = Replace(RngText, "+", ",")
For Each Clls In Range(Tmp)
If Clls <> "" Then GetVal = Clls
Next
End Function
Code ở trên vẫn chưa hoàn chỉnh đâu!Em cung mới suu tầm được cái UDF lam bằng lệnh Find còn cái vụ công thức thì Hichic. Nếu mà làm được bằng công thức thì các anh nhớ thêm dấu bằng vào A1+C1+E1+G1 (=A1+C1+E1+G1) nhé
On Error Resume Next
lrw = rng.Find(What:="*", _
After:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
On Error Resume Next
lcol = rng.Find(What:="*", _
After:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
On Error Resume Next
Last1 = rng.Parent.Cells(lrw, lcol).Address(False, False)
If Err.Number > 0 Then
Last1 = rng.Cells(1).Address(False, False)
Err.Clear
End If
On Error GoTo 0
End Select
Thử tiếp UDF tôi vừa cải tiến xong!Dạ anh nói đúng cách này cũng bị tình trạng tương tự như code của anh
Function GetVal(RngText As String)
Dim Clls As Range
Application.Volatile
On Error Resume Next
For Each Clls In Range(Replace(RngText, "+", ":"))
If Not Intersect(Clls, Range(Replace(RngText, "+", ","))) Is Nothing Then
If Clls <> "" Then GetVal = Clls
End If
Next
End Function
Chính vì lý do hàm không tự cập nhật nên tôi phải dùng Application.Volatile ---> Có cái này vào, ta sẽ có thể bấm F9 cho hàm cập nhật lại giá trị mớiAnh cho em hoi chút xíu về Application.Volatile
Sao Em dùng cong thức GetVal ở sheet1 và em qua Sheet 2 và chở về sheet1 lại thì hàm GetVal không chạy ?
Ái chà... còn vụ này nữa chứ!!!nấu ở Sheet chứa công thức thì nó chạy nhưng ờ Sheet khác thì nó cũng im re
Function GetVal(RngText As Range)
Dim Clls As Range
Application.Volatile
On Error Resume Next
For Each Clls In RngText.Parent.Range(Replace(RngText, "+", ":"))
If Not Intersect(Clls, RngText.Parent.Range(Replace(RngText, "+", ","))) Is Nothing Then
If Clls <> "" Then GetVal = Clls
End If
Next
End Function
Parent là CHA MẸ ---> RngText là vùng dữ liệu mà ta chọn làm tham chiếu, như trong file thì RngText là cell I1Anh giải thích Parent gíup em được không ạh