excel - ورقة - فصل محتويات خلية




محاكاة وظيفة تقسيم السلسلة في صيغة Excel (5)

أحاول تقسيم سلسلة في صيغة excel ، مثل ما يمكنني القيام به في العديد من لغات البرمجة ، على سبيل المثال

string words = "some text".split(' ');

المشكلة هي أنه لا يمكنني التأكد من وجود أكثر من كلمة واحدة في الخلية. إذا حاولت استخدام الدالتين FIND() أو SEARCH() ، #VALUE إذا لم تكن هناك مساحة. هل هناك طريقة سهلة لتقسيم السلسلة بحيث ترجع الكلمات الفردية (أو حتى أفضل ، بحيث تقوم بإرجاع الكلمة الأولى أو كل الكلمات الأخرى


إذا كنت بحاجة إلى تخصيص الأعمدة فقط عندما تكون الإجابة هي وظيفة "النص إلى الأعمدة" في MS Excel.

انظر مقالة مساعدة MS هنا: http://support.microsoft.com/kb/214261

HTH


بعض أوراق العمل الرائعة في الإجابات الأخرى ، لكنني أعتقد أنهم قد تغاضوا عن أنه يمكنك تحديد وظيفة معرفة من قبل المستخدم (udf) واستدعاء هذا من الورقة أو الصيغة.

المشكلة التالية لديك هي أن تقرر إما العمل مع مجموعة كاملة أو مع عنصر.

على سبيل المثال هذا الرمز وظيفة UDF

Public Function UdfSplit(ByVal sText As String, Optional ByVal sDelimiter As String = " ", Optional ByVal lIndex As Long = -1) As Variant
    Dim vSplit As Variant
    vSplit = VBA.Split(sText, sDelimiter)
    If lIndex > -1 Then
        UdfSplit = vSplit(lIndex)
    Else
        UdfSplit = vSplit
    End If
End Function

يسمح بعناصر مفردة بما يلي في خلية واحدة

=UdfSplit("EUR/USD","/",0)

أو يمكن للمرء استخدام كتل من الخلايا مع

=UdfSplit("EUR/USD","/")


صيغة لإرجاع الكلمة الأولى أو كل الكلمات الأخرى .

=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2)))

الأمثلة والنتائج

Text                  Description                      Results

                      Blank 
                      Space 
some                  Text no space                some
some text             Text with space                  text
 some                 Text with leading space          some
some                  Text with trailing space         some
some text some text   Text with multiple spaces        text some text

تعليقات على الفورمولا:

  • يتم استخدام وظيفة TRIM لإزالة جميع المسافات البادئة واللاحقة. كما تتم إزالة التباعد المضاعف داخل النص.
  • ثم تعثر الدالة FIND على أول مساحة
  • إذا لم تكن هناك مساحة ، فسيتم إرجاع النص المقتطع
  • خلاف ذلك يتم استخدام الدالة MID لإرجاع أي نص بعد المسافة الأولى

فيما يلي إرجاع الكلمة الأولى في الخلية A1 عند فصلها بمسافة (تعمل في Excel 2003):

=LEFT(A1, SEARCH(" ",A1,1))

=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)

سيتحقق هذا أولاً ما إذا كانت الخلية تحتوي على مسافة ، إذا كانت ستعرض القيمة الأولى من المساحة ، وإلا فسوف تعرض قيمة الخلية.

تصحيح

فقط للإضافة إلى الصيغة المذكورة أعلاه ، كما هو الحال إذا لم تكن هناك قيمة في الخلية ، فإنها ستعود 0. إذا كنت تبحث عن عرض رسالة أو شيء لإخبار المستخدم أنه فارغ ، فيمكنك استخدام ما يلي:

=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3))




excel-formula