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

كيف يتم إنشاء كل المجموعات المكونة من 3 أعمدة أو عدة أعمدة في Excel؟

لنفترض أن لدي 3 أعمدة من البيانات ، الآن ، أريد إنشاء أو سرد كافة مجموعات البيانات في هذه الأعمدة الثلاثة كما هو موضح أدناه. هل لديك أي طرق جيدة لحل هذه المهمة في Excel؟

قم بإنشاء كل المجموعات بناءً على 3 أعمدة من البيانات باستخدام صيغة

قم بإنشاء كل المجموعات استنادًا إلى 3 أعمدة أو عدة أعمدة من البيانات باستخدام تعليمات VBA البرمجية

قم بإنشاء جميع المجموعات بناءً على 3 أعمدة أو عدة أعمدة من البيانات باستخدام ميزة رائعة


قم بإنشاء كل المجموعات بناءً على 3 أعمدة من البيانات باستخدام صيغة

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

1. من فضلك ، انقر فوق الخلية حيث يتم إخراج النتيجة ، ثم انسخ والصق الصيغة أدناه فيها:

=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")

ملاحظات: في هذه الصيغة: A2: A4, B2: B6, C2: C5 هي نطاقات البيانات التي تريد استخدامها.

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


قم بإنشاء كل المجموعات استنادًا إلى 3 أعمدة أو عدة أعمدة من البيانات باستخدام تعليمات VBA البرمجية

من الصعب إلى حد ما استخدام الصيغة الطويلة أعلاه ، إذا كان هناك العديد من بيانات الأعمدة التي تحتاج إلى استخدامها ، فسيكون التعديل أمرًا مزعجًا. هنا ، سأقدم رمز VBA للتعامل معه بسرعة.

1. اضغط باستمرار على ALT + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

2. انقر إدراج > وحدة، والصق التعليمة البرمجية التالية في نافذة الوحدة النمطية.

كود فبا: قم بإنشاء كل المجموعات المكونة من 3 أعمدة أو عدة أعمدة

Sub ListAllCombinations()
'Updateby Extendoffice
Dim xDRg1, xDRg2, xDRg3 As Range
Dim xRg  As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3 As Integer
Dim xSV1, xSV2, xSV3 As String
Set xDRg1 = Range("A2:A4")  'First column data
Set xDRg2 = Range("B2:B6")  'Second column data
Set xDRg3 = Range("C2:C5")  'Third column data
xStr = "-"   'Separator
Set xRg = Range("E2")  'Output cell
For xFN1 = 1 To xDRg1.Count
    xSV1 = xDRg1.Item(xFN1).Text
    For xFN2 = 1 To xDRg2.Count
        xSV2 = xDRg2.Item(xFN2).Text
      For xFN3 = 1 To xDRg3.Count
        xSV3 = xDRg3.Item(xFN3).Text
        xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3
        Set xRg = xRg.Offset(1, 0)
       Next
    Next
Next
End Sub

ملاحظات: في الكود أعلاه ، A2: A4, B2: B6, C2: C5 هي نطاق البيانات الذي تريد استخدامه ، E2 هي خلية الإخراج التي تريد تحديد موقع النتائج. إذا كنت ترغب في الحصول على جميع مجموعات المزيد من الأعمدة ، يرجى تغيير وإضافة معلمات أخرى إلى الكود حسب حاجتك.

3. ثم اضغط F5 مفتاح لتشغيل هذا الرمز ، وسيتم إنشاء جميع مجموعات الأعمدة الثلاثة أو المتعددة مرة واحدة ، انظر لقطة الشاشة:


قم بإنشاء جميع المجموعات بناءً على 3 أعمدة أو عدة أعمدة من البيانات باستخدام ميزة رائعة

إذا كان لديك كوتولس ل إكسيلمع قوتها سرد كافة المجموعات ميزة ، يمكنك سرد كافة مجموعات الأعمدة المتعددة بسرعة وسهولة.

نصائح:لتطبيق هذا سرد كافة المجموعات الميزة ، أولاً ، يجب عليك تنزيل ملف كوتولس ل إكسيل، ثم قم بتطبيق الميزة بسرعة وسهولة.

بعد تثبيت كوتولس ل إكسيل، يرجى القيام بذلك على النحو التالي:

1. انقر كوتولس > إدراج > سرد كافة المجموعات، انظر لقطة الشاشة:

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

3. بعد تعيين البيانات والفاصل ، انقر فوق Ok ، في مربع المطالبة التالي ، حدد خلية لتحديد النتيجة ، انظر لقطة الشاشة:

4. ثم انقر فوق OK زر ، تم إنشاء جميع المجموعات على الفور كما هو موضح أدناه في لقطة الشاشة:

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


  • سوبر فورميولا بار (بسهولة تحرير أسطر متعددة من النص والصيغة) ؛ تخطيط القراءة (قراءة وتحرير أعداد كبيرة من الخلايا بسهولة) ؛ لصق في النطاق المصفى
  • دمج الخلايا / الصفوف / الأعمدة وحفظ البيانات. تقسيم محتوى الخلايا ؛ اجمع الصفوف المكررة والمجموع / المتوسط... منع تكرار الخلايا؛ قارن النطاقات
  • حدد مكرر أو فريد صفوف حدد صفوف فارغة (جميع الخلايا فارغة) ؛ البحث الفائق والبحث الغامض في العديد من المصنفات. تحديد عشوائي ...
  • نسخة طبق الأصل خلايا متعددة بدون تغيير مرجع الصيغة ؛ إنشاء المراجع تلقائيًا إلى أوراق متعددة أدخل الرموز النقطية، مربعات الاختيار والمزيد ...
  • المفضلة وإدراج الصيغ بسرعةوالنطاقات والمخططات والصور ؛ تشفير الخلايا مع كلمة السر إنشاء قائمة بريدية وإرسال رسائل البريد الإلكتروني ...
  • استخراج النص، إضافة نص ، إزالة حسب الموضع ، إزالة الفضاء؛ إنشاء وطباعة المجاميع الفرعية لترحيل الصفحات ؛ التحويل بين محتوى الخلايا والتعليقات
  • سوبر تصفية (حفظ وتطبيق مخططات التصفية على أوراق أخرى) ؛ فرز متقدم حسب الشهر / الأسبوع / اليوم ، التكرار والمزيد ؛ مرشح خاص بواسطة bold، italic ...
  • اجمع بين المصنفات وأوراق العمل؛ دمج الجداول على أساس الأعمدة الرئيسية ؛ تقسيم البيانات إلى أوراق متعددة; تحويل دفعة xls و xlsx و PDF
  • تجميع الجدول المحوري حسب رقم الأسبوع واليوم من الأسبوع والمزيد ... إظهار الخلايا غير المؤمنة والمغلقة بألوان مختلفة قم بتمييز الخلايا التي لها صيغة / اسم
علامة تبويب kte 201905
  • تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
  • فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
  • يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
Comments (19)
Rated 4.5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
Isn't this permutations without repetition, not combinations (of either variety)?

P(7,3) = 210 and that's the number of "combinations" your formula churns out for 3 columns of 7 rows.

Permutation of 7 choose 3 is 343 (repetition allowed).

C(7,3) = 35

Combination of 7 choose 3 is 84 (repetition allowed).

None of these match the 210 value returned by your formula.

Regardless, I like your formula. It can be extremely useful and taught me a lot about how to get something unusual out of Excel (LibreCalc in my case :) ).
This comment was minimized by the moderator on the site
Thanks! The formula worked nicely
Rated 4.5 out of 5
This comment was minimized by the moderator on the site
Esse código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também preciso combinar dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
This comment was minimized by the moderator on the site
Esse código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também preciso combinar dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
This comment was minimized by the moderator on the site
Bonjour, comment faire pour que chaque valeurs soient placées dans une colonne distincte en non séparées par un tiret ?
This comment was minimized by the moderator on the site
조합의 나열을 "단어-단어-단어" 순으로 나열하는 법은 이해했습니다.
그런데 "단어"가 아니라 숫자일 경우,
즉 숫자의 조합을 단순 나열이 아닌 덧셈이나 곱셈으로 적용하려면 어떻게 해야하는지 알 수 있을까요?

'VBA 코드 : 3 개 또는 여러 열의 모든 조합 생성' 에서 말이죠.

"1-1-1" 로 엑셀에 결과 값이 표기되는 것이 아니고

-1 로 엑셀에 표기될 수 있게 말입니다.
This comment was minimized by the moderator on the site
Hello So this is a code for 9 columns :')
Sub ListAllCombinations()
'Updateby Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 As Range
Dim xRg As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 As Integer
Dim xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 As String
Set xDRg1 = Range("A2:A3") 'First column data
Set xDRg2 = Range("B2:B3") 'Second column data
Set xDRg3 = Range("C2:C10") 'Third column data
Set xDRg4 = Range("D2:D2") 'Third column data
Set xDRg5 = Range("E2:E3") 'Third column data
Set xDRg6 = Range("F2:F3") 'Third column data
Set xDRg7 = Range("G2:G4") 'Third column data
Set xDRg8 = Range("H2:H3") 'Third column data
Set xDRg9 = Range("I2:I3") 'Third column data
xStr = "-" 'Separator
Set xRg = Range("K2") 'Output cell
For xFN1 = 1 To xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Text
For xFN2 = 1 To xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Text
For xFN3 = 1 To xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Text
For xFN4 = 1 To xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Text
For xFN5 = 1 To xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Text
For xFN6 = 1 To xDRg6.Count
xSV6 = xDRg6.Item(xFN6).Text
For xFN7 = 1 To xDRg7.Count
xSV7 = xDRg7.Item(xFN7).Text
For xFN8 = 1 To xDRg8.Count
xSV8 = xDRg8.Item(xFN8).Text
For xFN9 = 1 To xDRg9.Count
xSV9 = xDRg9.Item(xFN9).Text
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5 & xStr & xSV6 & xStr & xSV7 & xStr & xSV8 & xStr & xSV9
Set xRg = xRg.Offset(1, 0)
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
This comment was minimized by the moderator on the site
HiIn VBA code I used four column and range of the column are E2:E75, B2:B267, C2:C195 & D2:D267. Out put range is J2. In this case out put result was exceed row limit. Please help to solve the error
This comment was minimized by the moderator on the site
<p>Thank you so much for this code. I have modified the code for the amount of column I need (25).</p><p>Thanks,</p>
This comment was minimized by the moderator on the site
Thank you so much. Exactly what I 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