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

 كيفية تبديل الخلايا في عمود واحد بناءً على قيم فريدة في عمود آخر؟

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

doc لنقل القيم الفريدة 1

تبديل الخلايا في عمود واحد استنادًا إلى قيم فريدة باستخدام الصيغ

تبديل الخلايا في عمود واحد استنادًا إلى القيم الفريدة برمز VBA

تبديل الخلايا في عمود واحد بناءً على قيم فريدة باستخدام Kutools for Excel


باستخدام صيغ الصفيف التالية ، يمكنك استخراج القيم الفريدة ونقل البيانات المقابلة لها إلى صفوف أفقية ، يرجى القيام بما يلي:

1. أدخل صيغة الصفيف هذه: = INDEX ($ A $ 2: $ A $ 16 ، MATCH (0 ، COUNTIF ($ D $ 1: $ D1 ، $ A $ 2: $ A $ 16) ، 0)) في خلية فارغة ، D2 ، على سبيل المثال ، واضغط على Shift + Ctrl + Enter مفاتيح معًا للحصول على النتيجة الصحيحة ، انظر لقطة الشاشة:

doc لنقل القيم الفريدة 2

ملاحظة: في الصيغة أعلاه ، A2: A16 هو العمود الذي تريد سرد القيم الفريدة منه ، و D1 هي الخلية الموجودة أعلى خلية الصيغة هذه.

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

doc لنقل القيم الفريدة 3

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 مفاتيح للحصول على النتيجة ، انظر الصورة:

doc لنقل القيم الفريدة 4

ملاحظة: في الصيغة أعلاه: B2: B16 هي بيانات العمود التي تريد نقلها ، A2: A16 هو العمود الذي تريد تبديل القيم بناءً عليه ، و D2 يحتوي على القيمة الفريدة التي قمت باستخراجها في الخطوة 1.

4. ثم اسحب مقبض التعبئة إلى يمين الخلايا التي تريد إدراج البيانات المنقولة حتى تعرض 0 ، انظر لقطة الشاشة:

doc لنقل القيم الفريدة 5

5. ثم استمر في سحب مقبض التعبئة لأسفل إلى نطاق الخلايا للحصول على البيانات المنقولة كما هو موضح في لقطة الشاشة التالية:

doc لنقل القيم الفريدة 6


قد تكون الصيغ معقدة لكي تفهمها ، هنا ، يمكنك تشغيل رمز 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 مفتاح لتشغيل هذا الرمز ، وسيظهر مربع موجه لتذكيرك بتحديد نطاق البيانات الذي تريد استخدامه ، انظر لقطة الشاشة:

doc لنقل القيم الفريدة 7

4. ثم انقر فوق OK ، سيظهر مربع موجه آخر لتذكيرك بتحديد خلية لوضع النتيجة ، انظر لقطة الشاشة:

doc لنقل القيم الفريدة 8

6. انقر OK ، وتم تبديل البيانات الموجودة في العمود B بناءً على القيم الفريدة في العمود A ، انظر الصورة:

doc لنقل القيم الفريدة 9


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

كوتولس ل إكسيل : مع أكثر من 300 وظيفة إضافية مفيدة في Excel ، يمكنك تجربتها مجانًا دون قيود في أيام 30.

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

1. حدد نطاق البيانات الذي تريد استخدامه. (إذا كنت تريد الاحتفاظ بالبيانات الأصلية ، فيرجى نسخ البيانات ولصقها في موقع آخر أولاً.)

2. ثم اضغط كوتولس > دمج وتقسيم > الجمع بين الصفوف المتقدمة، انظر لقطة الشاشة:

3. في ضم الصفوف على أساس العمود مربع الحوار ، يرجى القيام بالعمليات التالية:

(1.) انقر فوق اسم العمود الذي تريد تبديل البيانات بناءً عليه ، ثم حدد المفتاح الأساسي;

(2.) انقر فوق عمود آخر تريد تبديل موضعه ، وانقر فوق دمج ثم اختر فاصلًا واحدًا لفصل البيانات المدمجة ، مثل مسافة ، فاصلة ، فاصلة منقوطة.

doc لنقل القيم الفريدة 11

4. ثم اضغط Ok ، تم دمج البيانات الموجودة في العمود B معًا في خلية واحدة استنادًا إلى العمود A ، انظر الصورة:

doc لنقل القيم الفريدة 12

5. ثم حدد الخلايا المدمجة ، وانقر فوق كوتولس > دمج وتقسيم > تقسيم الخلايا، انظر لقطة الشاشة:

6. في تقسيم الخلايا مربع الحوار، حدد انقسام إلى أعمدة تحت النوع الخيار ، ثم اختر الفاصل الذي يفصل بين بياناتك المدمجة ، انظر الصورة:

doc تبديل القيم الفريدة 14 14

7. ثم اضغط Ok ، وحدد خلية لوضع نتيجة الانقسام في مربع الحوار المنبثق ، انظر لقطة الشاشة:

doc لنقل القيم الفريدة 15

8. انقر OK، وستحصل على النتيجة التي تريدها. انظر لقطة الشاشة:

doc لنقل القيم الفريدة 16

قم بتنزيل 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٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
فرز التعليقات حسب
التعليقات (56)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيف أذهب في الاتجاه المعاكس؟ من عدة أعمدة في عمود واحد؟ شكرا لك مقدما! تيم
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كان هذا رائعا. لقد تميزت بحوالي 2000 قيمة فريدة في الصف A ولم أستطع إدارة هذا التمرين بدون مساعدتك. جزيل الشكر.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
فشلت الخطوة الأولى نفسها = INDEX ($ A $ 2: $ A $ 16، MATCH (0، COUNTIF ($ D $ 1: $ D1، $ A $ 2: $ A $ 16)، 0)) يعطي خطأ قيمة غير متوفرة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أنا فقط أريد أن أفعل العكس. كما لو كانت النتيجة النهائية بالفعل ، وأريد تحقيق الخطوة الأولى.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
انا اتطلع الى الشيئ ذاته
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل وجدت أي حل للسيناريو المعاكس؟ شكرًا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أريد أن أفعل العكس أيضًا. أي حل لديك أيها السادة؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا يا شباب،
للحصول على النتيجة المعاكسة بناءً على مثال هذه المقالة ، يمكنك تطبيق رمز VBA التالي: (ملاحظة: عند تحديد نطاق البيانات الذي تريد تبديل موضعه ، يرجى استبعاد صف الرأس)

تبديل فرعي
خافت xLRow ، xLCount طويل
خافت xRg كمدى
خافت xOutRg كنطاق
خافت xObjRRg كنطاق
خافت xTxt كسلسلة
خافت xCount كما طويل
خافت xVRg كمدى
على خطأ استئناف التالي
xTxt = ActiveWindow.RangeSelection.Address
تعيين xRg = Application.InputBox ("الرجاء تحديد نطاق البيانات:" ، "Kutools for Excel" ، xTxt ، ، ، ، ، ، 8)
تعيين xRg = Application.Intersect (xRg، xRg.Worksheet.UsedRange)
إذا كان xRg لا شيء ، فاخرج من Sub
إذا كان (xRg.Rows.count <2) أو _
(xRg.Areas.count> 1) ثم
MsgBox "تحديد غير صالح" ، "Kutools for Excel"
خروج الفرعية
إنهاء حالة
تعيين xOutRg = Application.InputBox ("يرجى تحديد نطاق الإخراج (حدد خلية واحدة):" ، "Kutools for Excel" ، xTxt ، ، ، ، ، 8)
إذا كان xOutRg لا شيء ، فقم بالخروج من Sub
Application.ScreenUpdating = خطأ
xLCount = xRg.Columns.count
بالنسبة إلى xLRow = 1 إلى xRg.Rows.count
قم بتعيين xObjRRg = Range (xRg.Cells (xLRow، 2)، xRg.Cells (xLRow، xLCount)). SpecialCells (xlCellTypeConstants)
xObjRRg.Copy
xOutRg.Offset (، 1) .PasteSpecial Paste: = xlPasteAll، Operation: = xlNone، SkipBlanks: = False، Transpose: = True
Application.CutCopyMode = خطأ
النطاق (الخلايا (xOutRg.Row ، xOutRg.Column) ، الخلايا (xOutRg.Row + xObjRRg.count - 1 ، xOutRg.Column)). القيمة = xRg.Cells (xLRow ، 1). القيمة
قم بتعيين xOutRg = xOutRg.Offset (RowOffset: = xObjRRg.count)
التالى
Application.ScreenUpdating = ترو
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
كيفية إجراء التحويل إذا لم يكن للعمود B قيم فريدة ولكنك لا تزال بحاجة إلى هذه القيم
KTE 100
KTE 100
بافتراض أنهما معاملتان مختلفتان
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا ديدين ,

هل يمكنك إعطاء مشكلتك بشكل أكثر وضوحًا أو تفصيلاً؟
يمكنك إدراج مثال لقطة شاشة لمشكلتك.
شكرا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا هناك،
هل يمكنك مساعدتي في المتطلبات أدناه.
طلبيه
KTE ------ 100KTE ------ 200KTO ------ 300KTO ------ 300
الناتج المتوقع
المنتج ----- الطلب ----- الطلب ------ الطلب
KTE ------ 100 ------ 200
KTO ------ 300 ------ 300







تم تصغير هذا التعليق بواسطة المشرف على الموقع
أنا أيضا بحاجة إلى نفس الشيء. أريد عرض 100 مرتين إذا كان هناك في البيانات
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل يمكنك اقتراح صيغة لذلك
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل سبق لك أن تلقيت استجابة / قرارًا لهذا التحدي؟ . لدي مثلها
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل هناك طريقة لفعل هذا في الاتجاه المعاكس؟ أي البيانات في صفوف متفاوتة الطول وفرزها في عمودين؟ انظر الملف المرفق.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أريد تبديل القيم المكررة أيضًا (جميع القيم - فريدة + مكررة) وليس قيمًا فريدة فقط. هل يمكنك إعطاء الصيغة لذلك أيضًا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أحتاج نفس الشيء
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل سبق لك أن تلقيت استجابة / قرارًا لهذا التحدي؟ . لدي مثلها
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مع الصيغة أدناه:

=IFERROR(INDEX($B$2:$B$45, MATCH(0, COUNTIF($D2:D2,$B$2:$B$45)+IF($A$2:$A$10<>$D2, 1, 0), 0)), 0)

كيف يمكنني تبديل البيانات باستخدام المطابقات التقريبية؟ لنفترض أنني أريد استخراج جميع القيم من العمود "ب" التي تطابق الأحرف / الأرقام التسعة الأولى من العمود "أ"؟ يتكون العمود B من 9 حرفًا بينما يتكون العمود A فقط من 11. شكرًا لك!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
علي أن أفعل عكس ذلك بالضبط. لدي العديد من الأعمدة المرتبطة بمعرف الصف وأريد لصقها في عمودين
على سبيل المثال لدي
Rowid ، القيمة ، القيمة 1 ، القيمة 2 ، القيمة 3 ، القيمة 4 ، القيمة. 225
100 ، دولفين ، 255 ، 9-- ، سارة ، جيمسون ، ....
179، راوتر، فيضان، جيسون، 89، أنف



اريده ان يبدو هكذا
100 ، دولفين
100، 255
100 ، 9--
100، سارة
100 ، جايمسون
179 ، جهاز التوجيه
179، طوفان
179 ، جيسون
179، 89
179، أنف
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا ديف ،
لحل مشكلتك ، يرجى استخدام رمز فبا أدناه: (ملاحظة: عند تحديد نطاق البيانات الذي تريد تغيير موضعه ، يرجى استبعاد صف الرأس.)

تبديل فرعي
خافت xLRow ، xLCount طويل
خافت xRg كمدى
خافت xOutRg كنطاق
خافت xObjRRg كنطاق
خافت xTxt كسلسلة
خافت xCount كما طويل
خافت xVRg كمدى
على خطأ استئناف التالي
xTxt = ActiveWindow.RangeSelection.Address
تعيين xRg = Application.InputBox ("الرجاء تحديد نطاق البيانات:" ، "Kutools for Excel" ، xTxt ، ، ، ، ، ، 8)
تعيين xRg = Application.Intersect (xRg، xRg.Worksheet.UsedRange)
إذا كان xRg لا شيء ، فاخرج من Sub
إذا كان (xRg.Rows.count <2) أو _
(xRg.Areas.count> 1) ثم
MsgBox "تحديد غير صالح" ، "Kutools for Excel"
خروج الفرعية
إنهاء حالة
تعيين xOutRg = Application.InputBox ("يرجى تحديد نطاق الإخراج (حدد خلية واحدة):" ، "Kutools for Excel" ، xTxt ، ، ، ، ، 8)
إذا كان xOutRg لا شيء ، فقم بالخروج من Sub
Application.ScreenUpdating = خطأ
xLCount = xRg.Columns.count
بالنسبة إلى xLRow = 1 إلى xRg.Rows.count
قم بتعيين xObjRRg = Range (xRg.Cells (xLRow، 2)، xRg.Cells (xLRow، xLCount)). SpecialCells (xlCellTypeConstants)
xObjRRg.Copy
xOutRg.Offset (، 1) .PasteSpecial Paste: = xlPasteAll، Operation: = xlNone، SkipBlanks: = False، Transpose: = True
Application.CutCopyMode = خطأ
النطاق (الخلايا (xOutRg.Row ، xOutRg.Column) ، الخلايا (xOutRg.Row + xObjRRg.count - 1 ، xOutRg.Column)). القيمة = xRg.Cells (xLRow ، 1). القيمة
قم بتعيين xOutRg = xOutRg.Offset (RowOffset: = xObjRRg.count)
التالى
Application.ScreenUpdating = ترو
نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
شكرًا لك ، إنه يعمل بشكل مثالي ، لقد وفرت لي يومين! :)
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا سكاييانغ ،
يرجى مشاركة رمز 3 أعمدة. فيما يلي المثال:
أريد بيانات مثل: yogesh@gmail.com community 1 عرض المجتمع 2 فقط للعرض فقط ...... goyal@gmail.com community 1 عرض المجتمع 2 فقط للعرض ........

تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا ygoyal

لحل مشكلتك ، يرجى تطبيق الكود أدناه:

تبديل فرعي

خافت xLRow ، xLCount طويل

خافت xRg كمدى

خافت xOutRg كنطاق

خافت xObjRRg كنطاق

خافت xTxt كسلسلة

خافت xCount كما طويل

خافت xVRg كمدى

Dim xC، xI، xI1، xI2 كعدد صحيح

على خطأ استئناف التالي

xTxt = ActiveWindow.RangeSelection.Address

تعيين xRg = Application.InputBox ("الرجاء تحديد نطاق البيانات:" ، "Kutools for Excel" ، xTxt ، ، ، ، ، ، 8)

تعيين xRg = Application.Intersect (xRg، xRg.Worksheet.UsedRange)

إذا كان xRg لا شيء ، فاخرج من Sub

إذا (xRg.Rows.Count <2) أو _

(xRg.Areas.Count> 1) ثم

MsgBox "تحديد غير صالح" ، "Kutools for Excel"

خروج الفرعية

إنهاء حالة

تعيين xOutRg = Application.InputBox ("يرجى تحديد نطاق الإخراج (حدد خلية واحدة):" ، "Kutools for Excel" ، xTxt ، ، ، ، ، 8)

إذا كان xOutRg لا شيء ، فقم بالخروج من Sub

Application.ScreenUpdating = خطأ

xLCount = xRg.Columns.Count

بالنسبة إلى xLRow = 1 إلى xRg.Rows.Count

قم بتعيين xObjRRg = Range (xRg.Cells (xLRow، 2)، xRg.Cells (xLRow، xLCount)). SpecialCells (xlCellTypeConstants)

على خطأ استئناف التالي

xC = (xObjRRg.Count Mod 2)

إذا كانت xC <> 0 ثم

xC = Int (xObjRRg.Count / 2) + 1

آخر

xC = Int (xObjRRg.Count / 2)

إنهاء حالة

xI1 = 1

xI2 = 2

من أجل xI = 1 To xC

النطاق (xObjRRg.Item (xI1) ، xObjRRg.Item (xI2)). نسخ

xOutRg.Offset (، 1) .PasteSpecial Paste: = xlPasteAll، Operation: = xlNone، SkipBlanks: = False، Transpose: = False

Application.CutCopyMode = خطأ

xOutRg.Value = xRg.Cells (xLRow، 1) .Value

قم بتعيين xOutRg = xOutRg.Offset (RowOffset: = 1)

xI1 = xI1 + (2)

xI2 = xI2 + (2)

التالى

التالى

Application.ScreenUpdating = ترو

نهاية الفرعية



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

تبديل الغرض الفريد ()

'تحديث بواسطة Extendoffice

خافت xLRow طالما

خافت أنا طويلة

خافت xCrit كسلسلة

Dim xCol كمجموعة جديدة

خافت xRg كمدى

خافت xOutRg كنطاق

خافت xTxt كسلسلة

خافت xCount كما طويل

خافت xVRg كمدى

خافت xFRg ، xSRg ، xCRg كنطاق

على خطأ استئناف التالي

xTxt = ActiveWindow.RangeSelection.Address

Set xRg = Application.InputBox ("يرجى تحديد نطاق البيانات (3 أعمدة فقط):" ، "Kutools for Excel" ، xTxt ، ، ، ، ، 8)

تعيين xRg = Application.Intersect (xRg، xRg.Worksheet.UsedRange)

إذا كان xRg لا شيء ، فاخرج من Sub

إذا كان (xRg.Columns.Count <> 3) أو _

(xRg.Areas.Count> 1) ثم

MsgBox "النطاق المستخدم هو منطقة واحدة فقط مع عمودين" ، "Kutools for Excel"

خروج الفرعية

إنهاء حالة

تعيين xOutRg = Application.InputBox ("يرجى تحديد نطاق الإخراج (حدد خلية واحدة):" ، "Kutools for Excel" ، xTxt ، ، ، ، ، 8)

إذا كان xOutRg لا شيء ، فقم بالخروج من Sub

قم بتعيين xOutRg = xOutRg.Range (1)

xLRow = xRg.Rows.Count

لأني = 2 إلى xLRow

xCol.Add xRg.Cells (i، 1) .Value، xRg.Cells (i، 1) .Value

التالى

Application.ScreenUpdating = خطأ

Application.ScreenUpdating = خطأ

بالنسبة إلى i = 1 إلى xCol.Count

xCrit = xCol.Item (i)

xOutRg.Offset (أنا ، 0) = xCrit

xRg.AutoFilter Field: = 1 ، Criteria1: = xCrit

اضبط xVRg = xRg.Range ("B2: B" & xLRow) .SpecialCells (xlCellTypeVisible)

إذا كان xVRg.Count> xCount ثم xCount = xVRg.Count

قم بتعيين xSRg = xRg.Range ("B2: B" & xLRow) .SpecialCells (xlCellTypeVisible)

ضبط xCRg = xOutRg.Offset (i، 1)

لكل xFRg في xSRg

xFRg نسخة

xCRg لصق خاص

xRg.Range ("B1"). نسخ

xCRg الإزاحة (- (i) ، 0). لصق خاص

xFRg.Offset (0، 1). نسخ

ضبط xCRg = xCRg.Offset (0، 1)

xCRg لصق خاص

xRg.Range ("c1"). نسخ

xCRg الإزاحة (- (i) ، 0). لصق خاص

ضبط xCRg = xCRg.Offset (0، 1)

التالى

Application.CutCopyMode = خطأ

التالى

xRg.em (1). نسخ

xOutRg.Paste خاص

xRg.AutoFilter

Application.ScreenUpdating = ترو

نهاية الفرعية
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا يا أخي ، لقد حاولت استخدام هذا الرمز ولكن برنامج Excel يتوقف عند تشغيل هذا الرمز ولا يمكنني رؤية الإخراج من الكود أعلاه. يرجى اقتراح ما يجب القيام به في هذه الحالة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
يعمل الرمز جيدًا في المصنف الخاص بي ، ما إصدار Excel الذي تستخدمه؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
MS Excel 2016
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يعمل الكود بشكل جيد في Excel 2016 الخاص بي أيضًا ، يرجى تجربته مع بعض بيانات النطاق الصغير أولاً.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
اختبرت على 160 سجلاً ولكن لا يزال هناك نسخة مكررة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا Skyyang ، أحب هذا ، هل من فرصة أن تجعله يعمل لأربعة أعمدة؟ مرة أخرى فقط باستخدام الأولين كمقارن ، أو أفضل من ذلك هو القدرة على اختيار عدد الأعمدة قبل تحديدها؟ ألقيت نظرة على السيناريو الخاص بك ، لن يكون لدي أدنى فكرة عن كيفية تحقيق ذلك ...
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا Skyyang ، أحب هذا ، هل من فرصة أن تجعله يعمل لأربعة أعمدة؟ مرة أخرى فقط باستخدام الأولين كمقارن ، أو أفضل من ذلك هو القدرة على اختيار عدد الأعمدة قبل تحديدها؟ ألقيت نظرة على السيناريو الخاص بك ، لن يكون لدي أدنى فكرة عن كيفية تحقيق ذلك ...
تم تصغير هذا التعليق بواسطة المشرف على الموقع
إخوانه ، الرجاء المساعدة في هذا.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا أخي ، ما زلت في انتظار مساعدتك
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
تمامًا مثل ديف ، أحتاج إلى القيام بعكس ذلك تمامًا. الجدول 2 لنقلها إلى الجدول 1. جدول الإدخال 2 ، جدول الإخراج 1.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
= INDEX ($ A $ 2: $ A $ 16، MATCH (0، COUNTIF ($ D $ 1: $ D1، $ A $ 2: $ A $ 16)، 0)) عملت معي لتحويل القيم الفريدة لعمود إلى عمود جديد العمود ولكن ... هل هناك طريقة للإعلان في دالة الفرز بحيث يتم تغيير موضع العمود الجديد الذي تم إنشاؤه بترتيب تصاعدي؟


شكر!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
تحتاج إلى الحصول على نفس الوضع ولكن بالنسبة للأعمدة المحددة مسبقًا التي سيتم تحديدها ستكون ($ A ، $ B) وتحتاج إلى موضع عمود الإخراج على $ D $ 1.
إذا كان لدى أي شخص فكرة فسيكون ذلك مساعدة كبيرة !!!!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، هل يمكننا إضافة كل صف وإعطاء الإخراج في عمود واحد ، مع الوظيفة المذكورة أعلاه.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لذلك أنا أعمل في شركة. لدينا أعمدة للمعلومات مثل الاسم الأخير والاسم الأول والرتبة والقسم ورقم الهاتف والعنوان. هل هناك طريقة يمكنني من خلالها استخدام صيغة مماثلة لتحويل صف المعلومات بأكمله إلى عمود بالأسماء؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
= INDEX ($ A $ 2: $ A $ 16، MATCH (0، COUNTIF ($ D $ 1: $ D1، $ A $ 2: $ A $ 16)، 0)) عملت معي لتحويل القيم الفريدة للعمود A إلى عمود جديد العمود A ... هل هناك طريقة لتحويل جميع القيم الموجودة في العمود B إلى موضعها كما هو موضح أدناه:

تاريخ طلب المنتج طلب طلب طلب طلب أمر طلب منتج
KTE 100 3/3/2019 KTE 100
KTO 150 3/3/2019 KTO 150
KTE 100 3/4/2019 BOT 150
KTO 100 3/4/2019 COD 200
KTO 200 3/5/2019
KTE 100 3/5/2019
نبت 150 3/5/2019
نبت 100 3/6/2019
KTO 100 3/6/2019
KTE 200 3/6/2019
BOT 200 3/7/2019
كود 200 3/7/2019
KTE 100 3/7/2019
KTO 150 3/7/2019
نبت 150 3/8/2019
KTE 150 3/8/2019
كود 150 3/8/2019
نبت 100 3/9/2019
نبت 200 3/10/2019
كود 100 3/10/2019
KTO 200 3/10/2019
كود 150 3/11/2019
KTE 100 3/11/2019
تم تصغير هذا التعليق بواسطة المشرف على الموقع
الماكرو لا يعمل. لقد نسخت فقط المحتويات في الخلية A1.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لدي مجموعة بيانات في الأعمدة أ (معرّف فريد) - هـ. يحتوي كل صف على بيانات بناءً على رقم المعرّف ، وهناك صفوف متعددة لكل رقم معرّف ، لكنني أريد صفًا واحدًا لكل رقم معرّف مع جميع البيانات الأخرى في الأعمدة ( سيكون 5 أعمدة كحد أدنى و 25 كحد أقصى اعتمادًا على عدد كل معرّف فريد). لقد وجدت رمزًا ولكنه يعمل فقط لعمودين. اضطررت إلى ربط الأعمدة الأربعة (لا تشمل المعرف) ثم تحديدها بعد تشغيل الماكرو (الكثير من العمل). بالنسبة إلى 15,000 صف من البيانات ، فإن هذا يستغرق وقتًا إضافيًا. هل هناك عمود ماكرو لا نهاية له من شأنه أن يعمل؟ شكرا مقدما للجميع على مساعدتكم!
الرقم التعريفي رمز ST # التاريخ
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لدي مجموعة بيانات بها معرّفات متعددة في العمود A ، ولديها بيانات متصلة في العمود B. لقد استخدمت الصيغة أعلاه وقمت بتعديلها قليلاً حتى أقوم بنقل الخلايا الموجودة في العمود B إلى صف بناءً على المعرف الفريد مرتبطة به في العمود A. الصيغة المستخدمة لتحديد المعرفات الفريدة هي: = INDEX ($ A $ 2: $ A $ 13409، MATCH (0، COUNTIF ($ D $ 1: $ D1، $ A $ 2: $ A $ 13409) ، 0)). الصيغة المستخدمة لإجراء التحويل هي: = IFERROR (INDEX ($ B $ 2: $ B $ 13409، MATCH (0، IF ($ A $ 2: $ A $ 13409 <> $ D2، 1، 0) + COUNTIF ($ D2: D2، $ B $ 2: $ B $ 13409) ، 0)) ، "N / A"). كلاهما ورد في المقال ، تم تغييرهما بشكل طفيف فقط.

تكمن المشكلة في أن مجموعة البيانات الخاصة بي في العمود B بها نسخ مكررة ، وتظهر أحيانًا واحدة تلو الأخرى ، وأحتاج إلى تقديم جميع القيم الموجودة في العمود في الصفوف.

الصورة المرفقة هي ما أود أن يوضحه الجدول (هذا حجم عينة صغير ، مجموعة البيانات الحقيقية بها أكثر من 13,000 إدخال). ما يحدث الآن هو عند مواجهة قيمة مكررة ، فلن يتم احتسابها.
على سبيل المثال ، يظهر الصف 9 للمعرف 11980 الآن فقط 0 -31.79 -0.19 -0.74 N / AN / A .... عندما أحتاجه لإظهاره بدلاً من ذلك هو 0 0 -31.79 -0.19 -0.74 0 0 N / AN / A. ...

هل هناك طريقة للتغلب على هذه المشكلة وحلها؟

شكرا لكم مقدما!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هل سبق لك أن تلقيت استجابة / قرارًا لهذا التحدي؟ . لدي مثلها
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لدي مجموعة بيانات تحتوي على 3 أعمدة معروضة أدناه:



العمود أ العمود ب العمود ج



البلد 1 السنة 1 القيمة 1

البلد 1 السنة 2 القيمة 2

البلد 1 السنة 3 القيمة 3 ،



البلد 2 السنة 1 القيمة 1

البلد 2 السنة 3 القيمة 3 ،

...........



أحتاج إلى دمج هذه الأعمدة الثلاثة في جدول مثل هذا:

السنة الأولى السنة الثانية السنة الثالثة ................................. السنة س



البلد 1 القيمة 1 القيمة 2 القيمة 3

البلد 2 القيمة 1 # مفقود القيمة 3

.....
.....
.....

CountryX Valuex ..................





المشكلة التي أواجهها هي أنه بالنسبة لبعض البيانات في العمود أ ، ليس لدي قيم لكل سنة فقط للبعض (على سبيل المثال ، الدولة 2 لديها قيم مفقودة للسنة 2)





هل هناك طريقة للتغلب على هذه المشكلة وحلها؟



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

تواصل معنا

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