بسم الله الرحمن الرحيم
اقدم لكم دالة معرفة لفصل القيم النصية عن القيم الرقمية
كل ما علينا هو ان نضيف هذ الكود للدالة المعرفة بموديل كما بالصورة
كود الدالة
CODE
Public Function SplitText(WorkRng As Range, Number As Boolean) As String <br />
Dim xLen As Long <br />
Dim xStr As String <br />
xLen = VBA.Len(WorkRng.Value) <br />
For i = 1 To xLen <br />
xStr = VBA.Mid(WorkRng.Value, i, 1) <br />
If ((VBA.IsNumeric(xStr) And Number) Or (Not (VBA.IsNumeric(xStr)) And Not (Number))) Then <br />
SplitText = SplitText + xStr <br />
End If <br />
Next <br />
End Function <br />
طريقة كتابة الدالة
للقيم النصية
CODE
=SplitText($A2;0)
أو
CODE
=SplitText($A2;False)<br />
<br />
للقيم الرقمية
CODE
=SplitText($A2;1)<br />
<br />
أو
CODE
=SplitText($A2;TRUE)<br />
<br />
كود اخر لفصل كل قيمة على حدا
الكود المستخدم للقيمتين
CODE
Sub split_Text()
Dim xLen As Long
Dim xStr As String
Dim Rng As Range
For Each Rng In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
xLen = VBA.Len(Rng.Value)
Rng.Offset(, 4).ClearContents
For i = 1 To xLen
xStr = VBA.Mid(Rng.Value, i, 1)
If Not (VBA.IsNumeric(xStr)) And Not (Number) Then
Rng.Offset(, 4) = Rng.Offset(, 4) + xStr
End If
Next i
Next Rng
End Sub
Sub Split_NUM()
Dim xLen As Long
Dim xStr As String
Dim Rng As Range
For Each Rng In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
xLen = VBA.Len(Rng.Value)
Rng.Offset(, 5).ClearContents
For i = 1 To xLen
xStr = VBA.Mid(Rng.Value, i, 1)
If (VBA.IsNumeric(xStr)) And Not (Number) Then
Rng.Offset(, 5) = Rng.Offset(, 5) & xStr
End If
Next i
Next Rng
End Sub
<code> </code>
لتحميل الملف اضغط هنا
ياسر العربي