كيفية تبديل الخلايا في عمود واحد بناءً على قيم فريدة في عمود آخر؟
لنفترض أن لديك نطاقًا من البيانات يحتوي على عمودين ، الآن ، تريد نقل الخلايا في عمود واحد إلى صفوف أفقية بناءً على قيم فريدة في عمود آخر للحصول على النتيجة التالية. هل لديك أي أفكار جيدة لحل هذه المشكلة في Excel؟
تبديل الخلايا في عمود واحد استنادًا إلى قيم فريدة باستخدام الصيغ
تبديل الخلايا في عمود واحد استنادًا إلى القيم الفريدة برمز VBA
تبديل الخلايا في عمود واحد استنادًا إلى القيم الفريدة باستخدام Kutools for Excel
تبديل الخلايا في عمود واحد استنادًا إلى قيم فريدة باستخدام الصيغ
باستخدام صيغ الصفيف التالية ، يمكنك استخراج القيم الفريدة ونقل البيانات المقابلة لها إلى صفوف أفقية ، يرجى القيام بما يلي:
1. أدخل صيغة الصفيف هذه: = INDEX ($ A $ 2: $ A $ 16 ، MATCH (0 ، COUNTIF ($ D $ 1: $ D1 ، $ A $ 2: $ A $ 16) ، 0)) في خلية فارغة ، D2 ، على سبيل المثال ، واضغط على شيفت + كترل + إنتر مفاتيح معًا للحصول على النتيجة الصحيحة ، انظر لقطة الشاشة:
ملاحظة: في الصيغة أعلاه ، 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)، وتذكر أن تضغط شيفت + كترل + إنتر مفاتيح للحصول على النتيجة ، انظر الصورة:
ملاحظة: في الصيغة أعلاه: B2: B16 هي بيانات العمود التي تريد نقلها ، A2: A16 هو العمود الذي تريد تبديل القيم بناءً عليه ، و D2 يحتوي على القيمة الفريدة التي قمت باستخراجها في الخطوة 1.
4. ثم اسحب مقبض التعبئة إلى يمين الخلايا التي تريد إدراج البيانات المنقولة حتى تعرض 0 ، انظر لقطة الشاشة:
5. ثم استمر في سحب مقبض التعبئة لأسفل إلى نطاق الخلايا للحصول على البيانات المنقولة كما هو موضح في لقطة الشاشة التالية:
تبديل الخلايا في عمود واحد استنادًا إلى القيم الفريدة برمز VBA
قد تكون الصيغ معقدة لكي تفهمها ، هنا ، يمكنك تشغيل رمز VBA التالي للحصول على النتيجة المرجوة التي تحتاجها.
1. اضغط باستمرار على ALT + F11 مفاتيح لفتح ميكروسوفت فيسوال باسيك للتطبيقات نافذة.
2. انقر إدراج > وحدة، والصق الكود التالي في ملف وحدة نافذة او شباك.
رمز فبا: تبديل الخلايا في عمود واحد استنادًا إلى قيم فريدة في عمود آخر:
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. ثم انقر فوق OK ، سيظهر مربع موجه آخر لتذكيرك بتحديد خلية لوضع النتيجة ، انظر لقطة الشاشة:
6. انقر OK ، وتم تبديل البيانات الموجودة في العمود B بناءً على القيم الفريدة في العمود A ، انظر الصورة:
تبديل الخلايا في عمود واحد استنادًا إلى القيم الفريدة باستخدام Kutools for Excel
إذا كان لديك Kutools for Excel، والجمع بين الجمع بين الصفوف المتقدمة و تقسيم الخلايا الأدوات المساعدة ، يمكنك إنهاء هذه المهمة بسرعة دون أي صيغ أو تعليمات برمجية.
Kutools for Excel : مع أكثر من 300 وظيفة إضافية مفيدة في Excel ، يمكنك تجربتها مجانًا دون قيود في أيام 30. |
بعد تثبيت Kutools for Excelيرجى القيام بما يلي:
1. حدد نطاق البيانات الذي تريد استخدامه. (إذا كنت تريد الاحتفاظ بالبيانات الأصلية ، فيرجى نسخ البيانات ولصقها في موقع آخر أولاً.)
2. ثم اضغط كوتولس > دمج وتقسيم > الجمع بين الصفوف المتقدمة، انظر لقطة الشاشة:
3. في ضم الصفوف على أساس العمود مربع الحوار ، يرجى القيام بالعمليات التالية:
(1.) انقر فوق اسم العمود الذي تريد تبديل البيانات بناءً عليه ، ثم حدد المفتاح الأساسي;
(2.) انقر فوق عمود آخر تريد تبديل موضعه ، وانقر فوق دمج ثم اختر فاصلًا واحدًا لفصل البيانات المدمجة ، مثل مسافة ، فاصلة ، فاصلة منقوطة.
4. ثم اضغط Ok ، تم دمج البيانات الموجودة في العمود B معًا في خلية واحدة استنادًا إلى العمود A ، انظر الصورة:
5. ثم حدد الخلايا المدمجة ، وانقر فوق كوتولس > دمج وتقسيم > تقسيم الخلايا، انظر لقطة الشاشة:
6. في تقسيم الخلايا مربع الحوار، حدد انقسام إلى أعمدة تحت النوع الخيار ، ثم اختر الفاصل الذي يفصل بين بياناتك المدمجة ، انظر الصورة:
7. ثم اضغط Ok ، وحدد خلية لوضع نتيجة الانقسام في مربع الحوار المنبثق ، انظر لقطة الشاشة:
8. انقر OK، وستحصل على النتيجة التي تريدها. انظر لقطة الشاشة:
تنزيل وتجربة مجانية Kutools for Excel الآن !
عرض توضيحي: تبديل الخلايا في عمود واحد استنادًا إلى القيم الفريدة باستخدام Kutools for Excel
أفضل أدوات إنتاجية المكتب
ارفع مهاراتك في برنامج Excel باستخدام Kutools for Excelوتجربة كفاءة لم يسبق لها مثيل. Kutools for Excel يقدم أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية وتوفير الوقت. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يجلب الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير
- تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
- فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
- يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!















