انتقل إلى المحتوى الرئيسي

كيف تسلسل النص بسهولة بناءً على المعايير في Excel؟

لنفترض أن لدي عمودًا من أرقام المعرفات يحتوي على بعض التكرارات وعمود الأسماء ، والآن ، أريد أن أجمع الأسماء بناءً على أرقام المعرف الفريدة كما هو موضح في لقطة الشاشة اليسرى ، لدمج النص بسرعة بناءً على المعايير ، كيف يمكننا تفعل في Excel؟

doc يجمع النص بناءً على المعايير 1

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

نص متسلسل على أساس المعايير مع كوتولس ل إكسيل


لدمج النص مع أرقام المعرف الفريدة ، يمكنك استخراج القيم الفريدة أولاً ثم إنشاء وظيفة محددة بواسطة المستخدم لدمج الأسماء بناءً على المعرف الفريد.

1. خذ البيانات التالية كمثال ، تحتاج إلى استخراج أرقام المعرفات الفريدة أولاً ، يرجى تطبيق صيغة الصفيف هذه: =IFERROR(INDEX($A$2:$A$15, MATCH(0,COUNTIF($D$1:D1, $A$2:$A$15), 0)),""), أدخل هذه الصيغة في خلية فارغة ، على سبيل المثال D2 ، ثم اضغط كترل + شيفت + إنتر مفاتيح معًا ، انظر لقطة الشاشة:

doc يجمع النص بناءً على المعايير 2

معلومه- سرية: في الصيغة أعلاه ، A2: A15 هو نطاق بيانات القائمة الذي تريد استخراج قيم فريدة منه ، D1 هي الخلية الأولى في العمود التي تريد إخراج نتيجة الاستخراج.

2. ثم اسحب مقبض التعبئة لأسفل لاستخراج جميع القيم الفريدة حتى يتم عرض الفراغات ، انظر الصورة:

doc يجمع النص بناءً على المعايير 3

3. في هذه الخطوة ، يجب عليك إنشاء ملف وظيفة تعريف المستخدم لدمج الأسماء بناءً على أرقام التعريف الفريدة ، يرجى الضغط باستمرار على ALT + F11 مفاتيح ، ويفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

4. انقر إدراج > وحدة، والصق الكود التالي في ملف وحدة نافذة او شباك.

كود فبا: نص متسلسل يعتمد على المعايير

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
'Updateby Extendoffice
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
    ConcatenateIf = CVErr(xlErrRef)
    Exit Function
End If
For i = 1 To CriteriaRange.Count
    If CriteriaRange.Cells(i).Value = Condition Then
        xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
    End If
Next i
If xResult <> "" Then
    xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

5. ثم احفظ وأغلق هذا الرمز ، ارجع إلى ورقة العمل الخاصة بك ، وأدخل هذه الصيغة في الخلية E2 ، = CONCATENATEIF ($ A $ 2: $ A $ 15، D2، $ B $ 2: $ B $ 15، "،") ، انظر لقطة الشاشة:

doc يجمع النص بناءً على المعايير 4

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

doc يجمع النص بناءً على المعايير 5

نصيحة:

1. في الصيغة أعلاه ، A2: A15 هي البيانات الأصلية التي تريد دمجها بناءً على ، D2 هي القيمة الفريدة التي استخرجتها ، و B2: B15 هو عمود الاسم الذي تريد دمجه معًا.

2. كما ترى ، قمت بدمج القيم المفصولة بفاصلة ، يمكنك استخدام أي أحرف أخرى عن طريق تغيير الفاصلة "،" في الصيغة حسب حاجتك.


إذا كان لديك كوتولس ل إكسيل، بما لديها الجمع بين الصفوف المتقدمة فائدة ، يمكنك بسرعة وسهولة ربط قاعدة النص على المعايير.

كوتولس ل إكسيل : مع أكثر من 300 وظيفة إضافية مفيدة في Excel ، يمكنك تجربتها مجانًا دون قيود في أيام 30.

بعد تثبيت كوتولس ل إكسيل، قم بما يلي:

1. حدد نطاق البيانات الذي تريد دمجه بناءً على عمود واحد.

2. انقر كوتولس > دمج وتقسيم > الجمع بين الصفوف المتقدمة، انظر لقطة الشاشة:

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

doc يجمع النص بناءً على المعايير 7

4. ثم انقر فوق الاسم العمود الذي تريد دمج القيم ، ثم انقر فوق دمج الخيار ، واختيار فاصل واحد للبيانات المدمجة ، انظر الصورة:

doc يجمع النص بناءً على المعايير 8

5. بعد الانتهاء من هذه الإعدادات ، انقر فوق OK للخروج من مربع الحوار ، وتم دمج البيانات الموجودة في العمود B معًا بناءً على عمود المفتاح أ. انظر لقطة الشاشة:

doc يجمع النص بناءً على المعايير 9

باستخدام هذه الميزة ، سيتم حل المشكلة التالية في أسرع وقت ممكن:

كيفية دمج عدة صفوف في واحد وجمع التكرارات في إكسيل؟

قم بتنزيل Kutools for Excel والإصدار التجريبي المجاني الآن!


كوتولس ل إكسيل: مع أكثر من 300 وظيفة إضافية مفيدة في Excel ، يمكنك تجربتها مجانًا دون قيود خلال 30 يومًا. تنزيل وتجربة مجانية الآن!

أفضل أدوات إنتاجية المكتب

🤖 مساعد Kutools AI: إحداث ثورة في تحليل البيانات على أساس: التنفيذ الذكي   |  إنشاء التعليمات البرمجية  |  إنشاء صيغ مخصصة  |  تحليل البيانات وإنشاء الرسوم البيانية  |  استدعاء وظائف Kutools...
الميزات الشعبية: البحث عن التكرارات أو تمييزها أو تحديدها   |  حذف الصفوف الفارغة   |  دمج الأعمدة أو الخلايا دون فقدان البيانات   |   جولة بدون صيغة 
سوبر بحث: معايير متعددة VLookup    VLookup ذات القيمة المتعددة  |   VLookup عبر أوراق متعددة   |   بحث غامض ....
قائمة منسدلة متقدمة: إنشاء القائمة المنسدلة بسرعة   |  القائمة المنسدلة التابعة   |  قائمة منسدلة متعددة التحديد ....
مدير العمود: إضافة عدد محدد من الأعمدة  |  نقل الأعمدة  |  تبديل حالة رؤية الأعمدة المخفية  |  مقارنة النطاقات والأعمدة 
الميزات المميزة: التركيز على الشبكة   |  عرض تصميم   |   شريط الفورمولا الكبير    مدير المصنفات والأوراق   |  مكتبة الموارد (النص السيارات)   |  منتقي التاريخ   |  اجمع أوراق العمل   |  تشفير/فك تشفير الخلايا    إرسال رسائل البريد الإلكتروني عن طريق القائمة   |  سوبر تصفية   |   مرشح خاص (تصفية غامق / مائل / يتوسطه خط ...) ...
أفضل 15 مجموعة أدوات12 نص الأدوات (إضافة نص, إزالة الأحرف، ...)   |   +50 رسم الأنواع (مخطط جانت، ...)   |   40+ عملي الصيغ (احسب العمر على أساس تاريخ الميلاد، ...)   |   19 إدخال الأدوات (أدخل رمز الاستجابة السريعة, إدراج صورة من المسار، ...)   |   12 تحويل الأدوات (أرقام إلى كلمات, نتيجة تحويل عملة، ...)   |   7 دمج وتقسيم الأدوات (الجمع بين الصفوف المتقدمة, تقسيم الخلايا، ...)   |   ... و اكثر

عزز مهاراتك في Excel باستخدام Kutools for Excel، واختبر كفاءة لم يسبق لها مثيل. يقدم Kutools for Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية وتوفير الوقت.  انقر هنا للحصول على الميزة التي تحتاجها أكثر...

الوصف


يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير

  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
Comments (38)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Great function! Is there a way to maintain the format in the cell it's concatenating data from? i.e. $45.07, $555.34, $0.00, $0.25, -$12.25 I've figured out how to stack them with wrap text and CHAR(10) in place of "," but having trouble keeping the format. I will be using this for a mail merge in Word.
This comment was minimized by the moderator on the site
Hello, Laurie,If you want to keep the cell formatting when concatenating the data, you can apply the Advanced Combine Rows feature of Kutools for Excel, in the dialog box, after finishing the settings, you just need to check Use formatted values option, and all the data formatting will be kept as you need.
You can download Kutools for Excel and free trial 30-day.
This comment was minimized by the moderator on the site
Is there any way to add "and" instead of "," before the last data? (For example: D2355, D2273, D2397, D2600 and D2386)
This comment was minimized by the moderator on the site
Hi, Hossain,May be there is not a direct method for solving your problem, you can add another formula to convert the last comma to the text "and".=SUBSTITUTE(E2,","," and ",LEN(E2)-LEN(SUBSTITUTE(E2,",","")))
Please try, thank you!
This comment was minimized by the moderator on the site
It worked like a charm sir. Thank you so much.
This comment was minimized by the moderator on the site
Great function, exactly what I needed! Works like a charm
This comment was minimized by the moderator on the site
Hi,

Very helpful VBA solution. Thank you kindly! My question is: Is there a way to change the code or function for multiple criteria? Although the code works for me, I need it to show values corresponding to a timestamp-interval (>= timestamp A, <= timestamp B)


Thank you in advance. :)
This comment was minimized by the moderator on the site
Is there a way to assign this to a button? On large data ranges it takes a while, so ideally I only want it to start the concatenate process once I've finished doing everything else in the sheet. I tried adding a trigger myself but it stopped working completely
This comment was minimized by the moderator on the site
BTW i used the VBA solution
This comment was minimized by the moderator on the site
Extremely helpfull! After editing it for my sheet i have #VALUE! for some of the unique values.
I did a countif to see if it could be that there are too many names to concatenate. The two unique values that have the #VALUE! error have 13635 and 19810 results. Is there a way to overcome this?
This comment was minimized by the moderator on the site
How can I ignore blank cells? mine currently displays this:

";;;;;;;;;"

I'd like for the 1st, 3rd and last 3 semi colons not to there/show. TIA
This comment was minimized by the moderator on the site
Hello, Chantelle
When concatenating the cell values ignoring the blank cells, please apply the below User Defined Function:

Function ConcatenateIf(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
ConcatenateIf = CVErr(xlErrRef)
Exit Function
End If
For i = 1 To CriteriaRange.Count
If CriteriaRange.Cells(i).Value = Condition Then
If ConcatenateRange.Cells(i).Value <> "" Then
xResult = xResult & Separator & ConcatenateRange.Cells(i).Value
End If
End If
Next i
If xResult <> "" Then
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf = xResult
Exit Function
End Function

Please try it, hope it can help you!
This comment was minimized by the moderator on the site
thank you very much! This was so simple and helped a lot!!
This comment was minimized by the moderator on the site
Is it possible to replace the comma splitter with a line break, i.e. char(10)? Many thanks.
This comment was minimized by the moderator on the site
Hello, David,

To combine the cells with line break, the following User Defined Function may help you.

Function ConcatenateIf_LineBreak(CriteriaRange As Range, Condition As Variant, ConcatenateRange As Range, Optional Separator As String = ",") As Variant
Dim xResult As String
On Error Resume Next
If CriteriaRange.Count <> ConcatenateRange.Count Then
ConcatenateIf = CVErr(xlErrRef)
Exit Function
End If
For I = 1 To CriteriaRange.Count
If CriteriaRange.Cells(I).Value = Condition Then
xResult = xResult & vbCrLf & ConcatenateRange.Cells(I).Value
End If
Next I
If xResult <> "" Then
xResult = VBA.Mid(xResult, VBA.Len(Separator) + 1)
End If
ConcatenateIf_LineBreak = xResult
Exit Function
End Function

After pasting this code, then apply this formula: =ConcatenateIf_LineBreak(A2:A13,F2,B2:B13,",").

After getting the results with this formula, you should click the Wrap Text to get the correct results you need.
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations