اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

الاخوه الكرام / أعضاء المنتدى

السلام عليكم ورحمة الله

لدي ملف في جميع خلايا عمود ما يحتوي على حروف وأرقام (حرفين وأكثر من 3 أرقام) 

كيف لي أن أفصل الحروف عن الارقام وجزاكم الله خيرا 

 

قام بنشر (معدل)
17 دقائق مضت, adsabbah said:

ممكن الملف يكون على أوفيس 2003 

جزاكم اله خيرا

Book1.rar

تفضل اخي على 2003 (عفواً اخي احمد لم انتبه الى مشاركتك)

extract_text_number.rar

تم تعديل بواسطه سليم حاصبيا
  • Like 1
قام بنشر

أستاذي الكريم 

جزاكم الله خيرا

ولكن لماذا حذف العلامة العشرية من الأرقام وأضافها في الحروف

450.45 ع. ب

جعلها 45045

 .ع. ب

قام بنشر

أخي الكريم صاحب الموضوع

يرجى تغيير اسم الظهور للغة العربية ليعبر عن شخصكم الكريم

 

جرب المعادلة التالية في الخلية B2

=TRIM(IF(A2<>"",RIGHT(SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ", ""))),LEN(SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ", ""))))-FIND("!",SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ", ""))))),""))

ثم ضع المعادلة التالية في الخلية C2

=TRIM(IF(A2<>"",SUBSTITUTE(A2,B2,""),""))

إذا لم تعمل المعادلة قم باستبدال الفاصلة العادية بفاصلة منقوطة

وإليك الملف المرفق فيه تطبيق للمطلوب

 

Split Text & Numbers Using Formulas.rar

  • Like 1
قام بنشر
6 ساعات مضت, adsabbah said:

أستاذي الكريم 

جزاكم الله خيرا

ولكن لماذا حذف العلامة العشرية من الأرقام وأضافها في الحروف

450.45 ع. ب

جعلها 45045

 .ع. ب

هذا لانك وضعت العلامة العشرية للنص كنقطة و نفس الشيء للارقام 

ليعمل الكود كما تريد يرجى فصل الاحرف بعلامة غير النقطة و سوف يتم تعديل الكود بعد ذلك

يمكتك استبدال لكود ليصبح هكذا

Sub extract_numbers()

Dim mycol As New Collection
Dim mycol1 As New Collection
Dim mytext, mytext1 As String

lr = Cells(Rows.Count, 1).End(3).Row
For i = 2 To lr
    x = Application.WorksheetFunction.Trim(Range("a" & i).Value)
    On Error Resume Next
     For t = 1 To Len(x)
        y = Mid(x, t, 1)
       
            If IsNumeric(y) Or Asc(y) = 46 Then
              mycol.Add y
              mytext = mytext & y
            Else
              mycol1.Add y
              mytext1 = mytext1 & y
            End If
    
     Next
   
        If Asc(Right((mytext), 1)) = 46 Then
             Cells(i, 2) = Left(mytext, Len(mytext) - 1)
        Else
             Cells(i, 2) = mytext
        End If

  Cells(i, 3) = Left(mytext1, Len(mytext1) - 1) & Chr(46) & Right(mytext1, 1)
    mytext = ""
    mytext1 = ""
Next
End Sub

 

  • Like 2
قام بنشر

تسلم أخي الحبيب سليم على هذا الكود الرائع ..

لو تكرمت عايزين منك شروحات للأكواد الجميلة التي تقدمها ليستفيد منها الجميع

بارك الله فيك وجزاك الله خيراً

تقبل تحياتي

 

  • Like 1
قام بنشر (معدل)

جزاكم الله خيرا أستاذي الكريم

ولكن هل يمكن فصل جزء من خلية عن باقي الخلية وليكن مثلا 

الجيزه : المركز المصرى للكتاب ، 1417 هـ = 1996 م.

أريد الحصول على الجملة التي بعد النقطتين وقبل الفصلة وهي "المركز المصري للكتاب"

 حيث أن الملف يحتوي على عمود به أكثر من 2500 صف 

العمود هو E 

أريد فصل الجزء الخاص الذي بعد : وقبل الفصلة في كل خلية فهل يمكن ذالك جزاكم الله خيرا

تم تعديل بواسطه adsabbah
  • Like 1
قام بنشر (معدل)

أستاذي الكريم / 

جزاكم الله خيرا وأستئذنكم في جعل الملف على اكسل 2003 حيث هو المتوفر لدي

 

تم تعديل بواسطه عادل صباح
قام بنشر (معدل)

 أستاذي الكريم الملف لا يفتح عندي علة اكسل 2003

تم تعديل بواسطه عادل صباح
قام بنشر

أخي الكريم عادل

يفضل دائماً إرفاق ملف معبر عن الملف الأصلي

جرب الكود التالي عله يفي بالغرض

Sub SplitIt()
    Dim I As Long, Arr1, Arr2
    
    Application.ScreenUpdating = False
        Arr1 = Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).Value
        For I = LBound(Arr1) To UBound(Arr1)
            Cells(I, 7) = VBA.Split(Arr1(I, 1), " : ")(1)
        Next I
        
        Arr2 = Range("G1:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value
        For I = LBound(Arr2) To UBound(Arr2)
            Cells(I, 2) = VBA.Split(Arr2(I, 1), " ، ")(0)
            Cells(I, 3) = VBA.Split(Arr2(I, 1), " ، ")(1)
        Next I
        
        Columns(7).ClearContents
    Application.ScreenUpdating = True
End Sub

تقبل تحياتي

Split Text YasserKhalil.rar

  • Like 1
قام بنشر

جرب الكود التالي

Sub SplitIt()
    Dim I As Long, Arr1, Arr2, X
    
    Application.ScreenUpdating = False
        Arr1 = Range("E1:E" & Cells(Rows.Count, 5).End(xlUp).Row).Value
        For I = LBound(Arr1) To UBound(Arr1)
            Cells(I, 6) = Mid(VBA.Split(Arr1(I, 1), " : ")(1), 1, InStr(VBA.Split(Arr1(I, 1), " : ")(1), " ¡ ") - 1)
        Next I
    Application.ScreenUpdating = True
End Sub

 

 

Split Text YasserKhalil V2.rar

قام بنشر (معدل)

طبعا أستاذي الكريم

شكرا أستاذي أبو براء وأستاذي سليم   

ولكن أنا أسف كنت مشغول في تجربة الكود 

وهذا سبب تأخري

كيف نجعل المثال السابق ينطبق على اللغة الإنجليزية 

بمعنى لو الجملة هكذا 

Giza : nahdet miser , 2006.

وأردت أن أحصل على جملة 

nahdet miser

فقط فكيف نحول المعادلة هذه 

IF(A3="";"";MID(LEFT(A3;FIND("،";A3)-1);FIND(":";A3)+1;500))

 

تم تعديل بواسطه عادل صباح
قام بنشر (معدل)

أستاذي الكريم / أبو براء بارك الله فيكم

أنا لم أستطع وضع الكود الذي أرشدتني إليه فهل يمكنكم المساعدة 

علما بأن ما أريد تحويله قد يكون باللغة العربية أو باللغة الإنجليزية 

مرفق مثال للتوضيح 

Ex.rar

Ex.rar

تم تعديل بواسطه عادل صباح

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information