Note: The other languages of the website are Google-translated. Back to English

كيف تسلسل النص بسهولة بناءً على المعايير في 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 for Excel يحل معظم مشاكلك ويزيد إنتاجيتك بنسبة 80٪

  • إعادة استخدام: أدخل بسرعة الصيغ المعقدة والرسوم البيانية وأي شيء استخدمته من قبل ؛ تشفير الخلايا مع كلمة السر إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني ...
  • سوبر فورميولا بار (بسهولة تحرير أسطر متعددة من النص والصيغة) ؛ تخطيط القراءة (قراءة وتحرير أعداد كبيرة من الخلايا بسهولة) ؛ لصق في النطاق المصفى
  • دمج الخلايا / الصفوف / الأعمدة دون فقدان البيانات ؛ تقسيم محتوى الخلايا ؛ ادمج الصفوف / الأعمدة المكررة... منع تكرار الخلايا؛ قارن النطاقات
  • حدد مكرر أو فريد صفوف حدد صفوف فارغة (جميع الخلايا فارغة) ؛ البحث الفائق والبحث الغامض في العديد من المصنفات. تحديد عشوائي ...
  • نسخة طبق الأصل خلايا متعددة بدون تغيير مرجع الصيغة ؛ إنشاء المراجع تلقائيًا إلى أوراق متعددة أدخل الرموز النقطية، مربعات الاختيار والمزيد ...
  • استخراج النص، إضافة نص ، إزالة حسب الموضع ، إزالة الفضاء؛ إنشاء وطباعة المجاميع الفرعية لترحيل الصفحات ؛ التحويل بين محتوى الخلايا والتعليقات
  • سوبر تصفية (حفظ وتطبيق مخططات التصفية على أوراق أخرى) ؛ فرز متقدم حسب الشهر / الأسبوع / اليوم ، التكرار والمزيد ؛ مرشح خاص بواسطة bold، italic ...
  • اجمع بين المصنفات وأوراق العمل؛ دمج الجداول على أساس الأعمدة الرئيسية ؛ تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls و xlsx و PDF
  • أكثر من 300 ميزة قوية. يدعم Office / Excel 2007-2021 و 365. يدعم جميع اللغات. سهولة النشر في مؤسستك أو مؤسستك. الميزات الكاملة نسخة تجريبية مجانية لمدة 30 يومًا. ضمان استرداد الأموال لمدة 60 يومًا.
علامة تبويب kte 201905

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

  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
فرز التعليقات حسب
التعليقات (38)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هذا حل ممتاز (كود VBA) وقد لبى متطلباتي في دقائق. سأحيل موقعك إلى الآخرين وسأزور كل ما أحتاجه للمضي قدمًا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرا على هذا الرمز. كان بالضبط ما احتاجه. لقد وفرت لي الكثير من الجهد ، شكرًا جزيلاً لك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرا لنشر هذا هو بالضبط ما أبحث عنه. يبدو أنني لا أقوم بحفظ رمز vba بشكل صحيح. أتلقى رسالة خطأ حول العثور على اسم غامض. أي اقتراحات أو خطوة بخطوة حول خطوة VBA لهذا المشروع؟ شكرًا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل ستكون هذه الأداة قادرة على التعامل مع مجموعات حساسة لحالة الأحرف مثل jABC 123 abc 345 ABc 678 ABC 912
تم تصغير هذا التعليق بواسطة المشرف على الموقع
حفظ رمز VBA هذا اليوم بالنسبة لي. شكرًا لك!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أنا أبحث عن طريقة لاستخدام شكل مختلف من هذا الرمز لإنشاء قائمة متغيرات بناءً على المتغير الرئيسي. باستخدام بيانات المثال ، سأحتاج إلى دمج العمودين A و B في معرّفات فريدة ثم ربط هذه المعرّفات بكل صف بناءً على القيمة الموجودة في العمود A ، باستثناء القيمة من المجموعة المدمجة لهذا الصف ، والباقي في فرز ألفا الطلب: قائمة المتغيرات الخاصة بـ Master id name CN20150012 Lucy CN20150012-Lucy CN20150012-Andy CN20150012-Monica CN20150012-Phiby US20150011 Tommas US20150011-Tommas US20150011-Rose CN20150012 Monica CN20150012-Monica CN20150012-Andy CN20150012-Phiby CN20150012 -Andy CN20150012-Lucy CN20150012-Monica US20150012 Rose US20150012-Rose US20150012-Tommas UK20150011 Peter UK20150011-Peter UK20150011-Anith UK20150014-Kristi UK20150014-Libin JP20150014 Ramon JP20150014-Ramon JP20150014-Brenda JP20150010 UK Lib20150010-UK20150010 -Kristi UK20150010-Peter UK20150014 Anith UK20150014-Anith UK20150014-Kristi UK20150014-Libin UK20150014-Peter JP20150014 James JP20150014 20150014-James JP20150014-Brenda JP20150014-James JP20150010-Matus CN20150010 آندي CN20150010-Andy CN20150010-Lucy CN20150010-Monica CN20150012-Phiby UK20150012 Matus UK20150012-Matus JP20150012-Brenda UK20150012-James UK20150014 كريستي أنثي UK20150014-UK20150010 Peter JP20150010 Brenda JP20150014-Brenda JP20150014-James JP20150014-Ramon لدي ورقة بها أكثر من 20150014 سطر ، كل عنصر يأتي مع ما يصل إلى 20150014 متغيرات. محاولة القيام بذلك يدويًا أمر مستحيل ولكن لا يمكنني العثور على حل يناسب احتياجاتي.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أخذ مزيد من الوقت لتحديث نفس صيغة concatenateif (). لدي 5000 صف. وقد مضى أكثر من ساعتين الآن ولا يزال قيد التحديث :( أي قرار لجعله يعمل بسرعة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شرح بالتفصيل وسهل الفهم ، لقد ساعدني حقًا عندما كنت عالقًا في نفس الموقف بالضبط.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مفيدة للغاية وموضحة بلطف
تم تصغير هذا التعليق بواسطة المشرف على الموقع
رائع شكرا لك! لقد استخدمت حل VBA وعمل بشكل رائع.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
عظيم!!! شكرا جزيلا لك!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لا يعمل مع نطاق البيانات الضخمة. لقد وجدت أن نطاق العمل يصل إلى A2: A362 فقط. سنكون ممتنين إذا قمت بمشاركة الحل الخاص بنطاق البيانات الضخمة مثل A2: A200000 .... شكرًا لك
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يعمل بشكل رائع فقط ببطء. أقوم بذلك باستخدام 27 ألف سطر من النص في Excel ، فقط قم بتشغيله ، ثم اتركه يعمل
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لا يعمل مع نطاق البيانات الضخمة. لقد وجدت أن بيانات العمل الخاصة بها تصل إلى A2: A362. سنكون ممتنين إذا قمت بمشاركة الحل لتغطية نطاق البيانات الأوسع مثل A2: A200000 ..... شكرا لك
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أهلاً! concactenateif هو بالضبط ما كنت أبحث عنه. ولكن لسوء الحظ لا يمكن تشغيله ، احصل دائمًا على خطأ تجميع: خطأ نحوي. أيه أفكار؟ في الماضي ، مع بعض وحدات VBA النمطية المستوردة ، لاحظت أنه كان علي استبدال "،" by "؛" كما هو الحال في جهاز الكمبيوتر الخاص بي ، ربما بسبب الإعدادات الإقليمية الخاصة بي ، فهذه هي الطريقة الوحيدة التي يعمل بها. بشغف استخدام Sumifs المضمنة وما إلى ذلك ولكن لا يمكن أن نفهم أين أخطأ في هذا واحد. هناك احتمال آخر يتبادر إلى الذهن وهو حقيقة أنه في Office 365 ، تحل كلمة "concat" محل كلمة "concactenate". هل يمكنك المساعدة من فضلك؟ شكرا مقدما ياش
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يستخدم الكود بعض المسافات غير الفاصلة للمسافات البادئة ، وهذه الرحلات تصل إلى Excel2016. من الصعب اكتشاف الخطأ غير المرئي ..
تم تصغير هذا التعليق بواسطة المشرف على الموقع
واجهت مشكلة بعد لصق هذا الرمز في Excel 2016 - فهو يحتوي على مسافات غير منتظمة (ربما مسافات غير منقسمة؟) والتي تتسبب في أخطاء في بناء الجملة غير واضحة بغض النظر عن مدى قربك لأنها غير مرئية! إن المسافات البادئة هي المشكلة. الصق الرمز في Word وشغّل الأحرف المخفية لرؤيتها.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
رائع!! عبقري! عملت مثل السحر! هناك مساحات تظهر كشخصية مختلفة. شكرا جزيلا ديف! أتساءل كيف خطرت لك الفكرة! أيضا ، أتساءل كيف يعمل مع بعض اللمحات الآخرين .. على أي حال ، شكرا مرة أخرى!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل هناك طريقة للقيام بذلك على جهاز Mac ؟؟؟؟
إنه بالضبط ما أحتاجه - يرجى إعلامي (أو إذا كان أي برنامج Mac سيفعل ذلك تعرفه). شكرًا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل هناك طريقة لتطبيق وظيفة CONCATENATEIF هذه في ورقة منفصلة؟ إنه يعمل عندما أضعه في نفس الورقة مثل بيانات الإدخال ، لكنني بحاجة إلى كلا الجدولين في أوراق مختلفة ولا يعمل.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
نعم ، ما تريد القيام به هو إضافة وظيفة إلى وحدة نمطية. انتقل إلى محرر VBA ، وانقر بزر الماوس الأيمن على "VBAProject" في Project Explorer ، ثم مرر الماوس فوق عنصر القائمة "إدراج" ، وفي تلك القائمة الفرعية اختر "وحدة نمطية". ستكون أي وظائف تضعها هناك قابلة للاستخدام على أي ورقة في مصنفك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا يا شباب ، لقد تلقيت خطأ #NAME؟ عندما أقوم بتطبيق الصيغ CONCATENATEIF في ملف Excel بعد تعيين رمز VBA لهذا ، هل يمكن لأي شخص مساعدتي في حلها ، شكرًا جزيلاً
تم تصغير هذا التعليق بواسطة المشرف على الموقع
سهل جدا ، شكرا لك :)
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل من الممكن استبدال فاصل الفاصلة بفاصل أسطر ، مثل char (10)؟ شكرا جزيلا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا يا ديفيد،

لدمج الخلايا مع فاصل الأسطر ، قد تساعدك الوظيفة المعرفة من قبل المستخدم التالية.

الدالة ConcatenateIf_LineBreak (CriteriaRange as Range ، Condition as Variant ، ConcatenateRange as Range ، Optional Separator As String = "،") كمتغير
خافت x النتيجة كسلسلة
على خطأ استئناف التالي
If CriteriaRange.Count <> ConcatenateRange.Count ثم
ConcatenateIf = CVErr (xlErrRef)
وظيفة الخروج
إنهاء حالة
بالنسبة إلى I = 1 To CriteriaRange.Count
إذا كانت CriteriaRange.Cells (I) .Value = Condition ثم
xResult = xResult & vbCrLf & ConcatenateRange.Cells (I) .Value
إنهاء حالة
التالي أنا
If xResult <> "" ثم
xResult = VBA.Mid (xResult ، VBA.Len (فاصل) + 1)
إنهاء حالة
ConcatenateIf_LineBreak = xResult
وظيفة الخروج
نهاية وظيفة

بعد لصق هذا الرمز ، قم بتطبيق هذه الصيغة: = ConcatenateIf_LineBreak (A2: A13، F2، B2: B13، "،").

بعد الحصول على النتائج بهذه الصيغة ، يجب النقر فوق "التفاف النص" للحصول على النتائج الصحيحة التي تريدها.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرا جزيلا! كان هذا بسيطًا جدًا وساعد كثيرًا !!
لا توجد تعليقات منشورة هنا حتى الآن
عرض المزيد
اترك تعليقاتك
النشر كضيف
×
قيم المنشور:
0   الشخصيات
المواقع المقترحة

تواصل معنا

حقوق التأليف والنشر © 2009 - شبكة الاتصالات العالمية.extendoffice.com. | كل الحقوق محفوظة. مشغل بواسطة ExtendOffice. | | خريطة الموقع
Microsoft وشعار Office هما علامتان تجاريتان أو علامتان تجاريتان مسجلتان لشركة Microsoft Corporation في الولايات المتحدة و / أو دول أخرى.
محمي بواسطة Sectigo SSL