اليك هذا التاتش ياحوده
الدالة المعرفه TND على اساس T=Text و N=Number و D=Date
كود الدالة
CODE
Function TND(txt As String, v As String)
Dim i%, chk$, t$, n$, d$, b$, break As Boolean
b = Mid(v, 2, 1)
For i = 1 To Len(txt) + 1
If Len(v) = 2 Then break = Mid(txt, i, 2) Like b & "#" Or Mid(txt, IIf(i - 1 = 0, 1, i - 1), 2) Like "#" & b
If IsNumeric(Mid(txt, i, 1)) Or break Then
chk = chk & Mid(txt, i, 1)
Else
If IsDate(Replace(chk, b, "/")) Then d = d & IIf(d = "", Replace(chk, b, "/"), "") Else n = n & Replace(chk, b, "")
chk = ""
t = t & Mid(txt, i, 1)
End If
Next i
Select Case LCase(v)
Case "t", "t" & b: TND = t
Case "d" & b: If d = "" And b <> "" Then TND = "" Else TND = DateValue(d)
Case "n", "n" & b: TND = IIf(n = "", "", Val(n))
Case Else: TND = CVErr(xlErrValue)
End Select
End Function
طيب الدالة بتعمل ايه (قلبظ بجنيه)
اول باراميتر دخل النص
والتانى
اما T لاستخراج النص او T/ اى T والفاصل بين التاريخ وذلك لاستبعاد تنسيقات التاريخ من النص
واما N لاستخراج الرقم او N/ اى N والفاصل بين التاريخ وذلك لاستبعاد تنسيقات التاريخ من الرقم
واما /D لاستخراج التاريخ نفس الكلام هنا / الفاصل ولازم تكتب الفاصل لو هتستخرج تاريخ (تقدر تكتب اى فاصل عدا علامة * وعلامة ؟)
فى حالة استخراج رقم او تارخ هتخرج بقيمتها الرقميه
يعنى لما تطلع تاريخ نسق انت الخلية بالشكل اللى انت عايزه ياغالى
يعنى اسم الدالة كل حرف فيها يستخرج حاجه ، شوفت بسيطه ازاى 