كيف تسرد جميع المجموعات الممكنة من عمود واحد في إكسيل؟
إذا كنت ترغب في إرجاع جميع المجموعات الممكنة من بيانات عمود واحد للحصول على النتيجة كما هو موضح أدناه ، هل لديك أي طرق سريعة للتعامل مع هذه المهمة في Excel؟
قائمة بجميع التركيبات الممكنة من عمود واحد مع الصيغ
سرد كافة التركيبات الممكنة من عمود واحد مع التعليمات البرمجية لـ VBA
قائمة بجميع التركيبات الممكنة من عمود واحد مع الصيغ
يمكن أن تساعدك صيغ الصفيف التالية في تحقيق هذه المهمة ، يرجى القيام بذلك خطوة بخطوة:
1. أولاً ، يجب عليك إنشاء خليتين معادلة مساعدتين. في الخلية C1 ، الرجاء إدخال الصيغة أدناه ، واضغط كترل + شيفت + إنتر مفاتيح للحصول على النتيجة:
2. في الخلية C2 ، أدخل الصيغة التالية ، واضغط على كترل + شيفت + إنتر مفاتيح معًا للحصول على النتيجة الثانية ، انظر لقطة الشاشة:
3. ثم انسخ والصق الصيغة التالية في الخلية D2 ، واضغط على كترل + شيفت + إنتر مفاتيح معًا للحصول على النتيجة الأولى ، انظر لقطة الشاشة:
4. ثم حدد خلية الصيغة هذه ، واسحب مقبض التعبئة لأسفل حتى تظهر خلايا فارغة. الآن ، يمكنك رؤية جميع مجموعات بيانات العمود المحددة معروضة كما هو موضح أدناه العرض التوضيحي:
سرد كافة التركيبات الممكنة من عمود واحد مع التعليمات البرمجية لـ VBA
الصيغ المذكورة أعلاه متاحة فقط لإصدارات Excel الأحدث ، إذا كان لديك إصدارات سابقة من Excel ، فإن رمز VBA التالي يمكن أن يقدم لك خدمة.
1. صحافة Alt + F11 مفاتيح في نفس الوقت لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. ثم اضغط إدراج > وحدة، انسخ والصق رمز فبا أدناه في النافذة.
كود فبا: سرد كل المجموعات الممكنة من عمود واحد
Sub ConnectArr()
'Updateby ExtendOffice
Dim xDValue As Variant
Dim xOutRg As Range
Dim xDictionary As Object
Dim xF As Long
Dim xChar As String
xDValue = Range("A2:A6").Value 'the data range
Set xOutRg = Range("C1") 'output range
xChar = "," 'separator
For xF = 1 To UBound(xDValue)
Set xDictionary = CreateObject("Scripting.Dictionary")
xDictionary(0) = "Sets of " & xF
Call ConnectValue(xDValue, xDictionary, 0, xF, 0, "", xChar)
xOutRg.Offset(0, xF - 1).Resize(xDictionary.Count).Value = WorksheetFunction.Transpose(xDictionary.Items)
Set xDictionary = Nothing
Next
End Sub
Sub ConnectValue(ByRef pDValue, ByRef pDictionary, ByRef pLevel, ByVal pMaxLevel, ByVal pIndex, ByVal pValue, ByVal pChar)
Dim xF As Long
If pLevel = pMaxLevel Then
pDictionary(pDictionary.Count + 1) = pValue
Exit Sub
End If
For xF = pIndex + 1 To UBound(pDValue)
If pValue = "" Then
Call ConnectValue(pDValue, pDictionary, pLevel + 1, pMaxLevel, xF, pDValue(xF, 1), pChar)
Else
Call ConnectValue(pDValue, pDictionary, pLevel + 1, pMaxLevel, xF, pValue & pChar & pDValue(xF, 1), pChar)
End If
Next
End Sub
- A2: A6: هي قائمة البيانات التي تريد استخدامها ؛
- C1: هي خلية الإخراج ؛
- ,: المحدد لفصل المجموعات.
3. ثم اضغط على F5 مفتاح لتنفيذ هذا الرمز. يتم سرد جميع المجموعات من العمود الفردي كما هو موضح أدناه لقطة الشاشة:
أفضل أدوات إنتاجية المكتب
عزز مهاراتك في Excel باستخدام Kutools for Excel، واختبر كفاءة لم يسبق لها مثيل. يقدم Kutools for Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية وتوفير الوقت. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير
- تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
- فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
- يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!