كيفية تبديل الخلايا في عمود واحد بناءً على القيم الفريدة في عمود آخر؟
لنفترض أن لديك نطاقًا من البيانات يحتوي على عمودين، والآن تريد تبديل الخلايا في عمود واحد إلى صفوف أفقية بناءً على القيم الفريدة في العمود الآخر للحصول على النتيجة التالية. هل لديك أي أفكار جيدة لحل هذه المشكلة في Excel؟
تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام الصيغ
تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام كود VBA
تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام Kutools لـ Excel
تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام الصيغ
مع الصيغ المصفوفة التالية، يمكنك استخراج القيم الفريدة وتبديل بياناتها المقابلة إلى صفوف أفقية، يرجى القيام بما يلي:
1. أدخل هذه الصيغة المصفوفة: =INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) في خلية فارغة، D2 على سبيل المثال، واضغط معًا على مفاتيح Shift + Ctrl + Enter للحصول على النتيجة الصحيحة، انظر إلى لقطة الشاشة:
ملاحظة: في الصيغة أعلاه، A2:A16 هو العمود الذي تريد سرد القيم الفريدة منه، وD1 هي الخلية فوق خلية هذه الصيغة.
2. ثم اسحب مقبض التعبئة لأسفل إلى الخلايا لاستخراج جميع القيم الفريدة، انظر إلى لقطة الشاشة:
3. وبعد ذلك استمر بإدخال هذه الصيغة في الخلية E2: =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0)، وتذكر أن تضغط على مفاتيح Shift + Ctrl + Enter للحصول على النتيجة، انظر إلى لقطة الشاشة:
ملاحظة: في الصيغة أعلاه: B2:B16 هو بيانات العمود الذي تريد تبديله، A2:A16 هو العمود الذي تريد تبديل القيم بناءً عليه، وD2 تحتوي على القيمة الفريدة التي استخرجتها في الخطوة 1.
4. ثم اسحب مقبض التعبئة إلى يمين الخلايا التي تريد سرد البيانات المبدلة فيها حتى يتم عرض 0، انظر إلى لقطة الشاشة:
5. وبعد ذلك استمر بسحب مقبض التعبئة لأسفل إلى نطاق الخلايا للحصول على البيانات المبدلة كما هو موضح في لقطة الشاشة التالية:
تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام كود VBA
قد تكون الصيغ معقدة بالنسبة لك لفهمها، هنا، يمكنك تشغيل كود VBA التالي للحصول على النتيجة المرجوة التي تحتاجها.
1. اضغط معًا على مفاتيح ALT + F11 لفتح نافذة Microsoft Visual Basic for Applications.
2. انقر فوق إدراج > وحدة، والصق الكود التالي في نافذة الوحدة.
كود VBA: تبديل الخلايا في عمود واحد بناءً على القيم الفريدة في عمود آخر:
Sub transposeunique()
'updateby Extendoffice
Dim xLRow As Long
Dim i As Long
Dim xCrit As String
Dim xCol As New Collection
Dim xRg As Range
Dim xOutRg As Range
Dim xTxt As String
Dim xCount As Long
Dim xVRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If (xRg.Columns.Count <> 2) Or _
(xRg.Areas.Count > 1) Then
MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
If xOutRg Is Nothing Then Exit Sub
Set xOutRg = xOutRg.Range(1)
xLRow = xRg.Rows.Count
For i = 2 To xLRow
xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
Next
Application.ScreenUpdating = False
For i = 1 To xCol.Count
xCrit = xCol.Item(i)
xOutRg.Offset(i, 0) = xCrit
xRg.AutoFilter Field:=1, Criteria1:=xCrit
Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
If xVRg.Count > xCount Then xCount = xVRg.Count
xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False
Next
xOutRg = xRg.Cells(1, 1)
xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
xRg.Rows(1).Copy
xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
xRg.AutoFilter
Application.ScreenUpdating = True
End Sub
3. ثم اضغط على مفتاح F5 لتشغيل هذا الكود، وسيظهر مربع تنبيه لتذكيرك باختيار نطاق البيانات الذي تريد استخدامه، انظر إلى لقطة الشاشة:
4. وبعد ذلك انقر فوق زر موافق، سيظهر مربع تنبيه آخر لتذكيرك باختيار خلية لوضع النتيجة، انظر إلى لقطة الشاشة:
6. انقر فوق زر موافق، وستتم عملية تبديل البيانات في العمود B بناءً على القيم الفريدة في العمود A، انظر إلى لقطة الشاشة:
تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام Kutools لـ Excel
إذا كان لديك Kutools لـ Excel، يمكن دمج أدوات دمج الصفوف المتقدمة وتقسيم الخلايا، يمكنك إنهاء هذه المهمة بسرعة دون أي صيغ أو أكواد.
بعد تثبيت Kutools لـ Excel، يرجى القيام بما يلي:
1. حدد نطاق البيانات الذي تريد استخدامه. (إذا كنت تريد الاحتفاظ بالبيانات الأصلية، يرجى نسخ البيانات ولصقها في موقع آخر أولاً.)
2. ثم انقر فوق Kutools > دمج وتقسيم > دمج الصفوف المتقدمة، انظر إلى لقطة الشاشة:
3. في مربع الحوار دمج الصفوف بناءً على العمود، يرجى القيام بالعمليات التالية:
(1.) انقر فوق اسم العمود الذي تريد تبديل البيانات بناءً عليه، واختر المفتاح الأساسي؛
(2.) انقر فوق عمود آخر الذي تريد تبديله، ثم انقر فوق دمج واختر فاصلًا لفصل البيانات المدمجة، مثل المسافة، الفاصلة، الفاصلة المنقوطة.
4. ثم انقر فوق زر موافق، سيتم دمج البيانات في العمود B معًا في خلية واحدة بناءً على العمود A، انظر إلى لقطة الشاشة:
5. وبعد ذلك حدد الخلايا المدمجة، وانقر فوق Kutools > دمج وتقسيم > تقسيم الخلايا، انظر إلى لقطة الشاشة:
6. في مربع الحوار تقسيم الخلايا، حدد تقسيم إلى أعمدة أسفل خيار النوع، ثم اختر الفاصل الذي يفصل بياناتك المدمجة، انظر إلى لقطة الشاشة:
7. ثم انقر فوق زر موافق، وحدد خلية لوضع نتيجة التقسيم في مربع الحوار المنبثق، انظر إلى لقطة الشاشة:
8. انقر فوق موافق، وستحصل على النتيجة التي تحتاجها. انظر إلى لقطة الشاشة:
تحميل وتجربة Kutools لـ Excel الآن مجانًا!
عرض توضيحي: تبديل الخلايا في عمود واحد بناءً على القيم الفريدة باستخدام Kutools لـ Excel
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير
- تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
- افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!