انتقل إلى المحتوى الرئيسي
Note: The other languages of the website are Google-translated. Back to English

كيفية نسخ تنسيق المصدر لخلية البحث عند استخدام Vlookup في Excel؟

في المقالات السابقة ، تحدثنا عن الحفاظ على لون الخلفية عند قيم vlookup في Excel. هنا في هذه المقالة ، سنقدم طريقة لنسخ جميع تنسيقات الخلية للخلية الناتجة عند إجراء Vlookup في Excel. الرجاء القيام بما يلي.

نسخ تنسيق المصدر عند استخدام Vlookup في Excel مع وظيفة محددة من قبل المستخدم


نسخ تنسيق المصدر عند استخدام Vlookup في Excel مع وظيفة محددة من قبل المستخدم

لنفترض أن لديك جدولًا كما هو موضح أدناه. أنت الآن بحاجة إلى التحقق مما إذا كانت القيمة المحددة (في العمود E) موجودة في العمود A وإرجاع القيمة المقابلة بالتنسيق في العمود C. يرجى القيام بما يلي لتحقيق ذلك.

1. في ورقة العمل تحتوي على القيمة التي تريد مشاهدتها ، انقر بزر الماوس الأيمن فوق علامة تبويب الورقة وحدد عرض الرمز من قائمة السياق. انظر لقطة الشاشة:

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

كود VBA 1: Vlookup وقيمة الإرجاع مع التنسيق

Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20211203
    Dim I As Long
    Dim xKeys As Long
    Dim xDicStr As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
    xKeys = UBound(xDic.Keys)
    If xKeys >= 0 Then
        For I = 0 To UBound(xDic.Keys)
            xDicStr = xDic.Items(I)
            If xDicStr <> "" Then
                Set xRg = Application.Range(xDicStr)
                xRg.Copy
                Range(xDic.Keys(I)).PasteSpecial xlPasteFormats
            Else
                Range(xDic.Keys(I)).Interior.Color = xlNone
            End If
        Next
        Set xDic = Nothing
    End If
    Application.ScreenUpdating = True
    Application.CutCopyMode = True
End Sub

3. ثم اضغط إدراج > وحدة، وانسخ رمز VBA 2 أدناه في نافذة الوحدة النمطية.

كود VBA 2: Vlookup وقيمة الإرجاع مع التنسيق

Public xDic As New Dictionary
'Update by Extendoffice 20211203
Function LookupKeepFormat(ByRef FndValue, ByRef LookupRng As Range, ByRef xCol As Long)
    Dim xFindCell As Range
    On Error Resume Next
    Application.ScreenUpdating = False
    Set xFindCell = LookupRng.Find(FndValue, , xlValues, xlWhole)
    If xFindCell Is Nothing Then
        LookupKeepFormat = " "
        xDic.Add Application.Caller.Address, " "
    Else
        LookupKeepFormat = xFindCell.Offset(0, xCol - 1).Value
        xDic.Add Application.Caller.Address, xFindCell.Offset(0, xCol - 1).Address(External:=True)
    End If
    Application.ScreenUpdating = True
End Function

4. انقر الأدوات > المحلية. ثم تحقق من ملف وقت تشغيل البرنامج النصي لـ Microsoft في مربع المراجع - VBAProject صندوق المحادثة. انظر لقطة الشاشة:

5. اضغط على قديم + Q مفاتيح للخروج من ميكروسوفت فيسوال باسيك للتطبيقات نافذة.

6. حدد خلية فارغة مجاورة لقيمة البحث ، ثم أدخل الصيغة =LookupKeepFormat(E2,$A$1:$C$8,3) في شريط الفورمولا، ثم اضغط على أدخل الرئيسية.

ملاحظة: في الصيغة ، E2 يحتوي على القيمة التي ستبحث عنها ، 1 دولار أسترالي: 8 دولارات كندية هو نطاق الجدول والرقم 3 يعني أن القيمة المقابلة التي ستُرجعها تقع في العمود الثالث من الجدول. الرجاء تغييرها كما تريد.

7. استمر في تحديد خلية النتيجة الأولى ، ثم اسحب مقبض التعبئة لأسفل للحصول على جميع النتائج جنبًا إلى جنب مع التنسيق كما هو موضح أدناه.


مقالات ذات صلة:


أفضل أدوات إنتاجية المكتب

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٪ ، ويقلل مئات النقرات بالماوس كل يوم!
أوفيسيتاب القاع
فرز التعليقات حسب
التعليقات (43)
لا يوجد تقييم. كن أول من يقيم!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
تعطيني خطأ في الترجمة ، خطأ في بناء الجملة

الرجاء المساعدة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
يوم جيد،
تم تحديث الكود في المقالة. شكرا لك على تعليقك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أنا أيضا حصلت على خطأ المترجم.
يتم تصحيحه إذا قمت بتغيير المتغير التالي باستخدام "" الفعلي. رقم '؛' في المنتصف.
LookupKeepFormat = ""
xDic.Add Application.Caller.Address، ""
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
آسف على الخطأ ، تم تحديث الكود في المقالة.
يجب أن يكون الخطأ "" علامتي اقتباس "". شكرا لك على تعليقك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
حصلت على نفس الخطأ.

سيكون عليك تغيير "" الفعلي "، بدون '؛' كما هو مبين أدناه
LookupKeepFormat = ""
xDic.Add Application.Caller.Address، ""

LookupKeepFormat = ""
xDic.Add Application.Caller.Address ""
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا،
آسف على الخطأ ، تم تحديث الكود في المقالة. شكرا لك للمشاركة.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هذا شيء عظيم، شكرا لك! المشكلة الوحيدة هي أنني أجد أنها تعمل بشكل جيد إذا كنت أبحث في نفس الورقة ، لكن لا يمكنني تشغيلها عندما أحاول إجراء بحث في ورقة منفصلة عن بيانات المصدر. سوف نستمر في المحاولة
تم تصغير هذا التعليق بواسطة المشرف على الموقع
جوليا ، صحح هذه الأسطر:
في البحث عن وظيفة
xDic.Add Application.Caller.Address، xFindCell.Offset (0، xCol - 1). Address & "|" & LookupRng.Parent.Name

في Sub Worksheet_Change:
الأوراق (مقسم (xDic. العناصر (I)، "|") (1)). النطاق (Split (xDic.Items (I)، "|") (0)). نسخ
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا هوغو ،


لدي نفس مشكلة جوليا. لا يعمل على أوراق أخرى. هل يمكنك المساعدة في كتابة التعليمات البرمجية للوظيفة بأكملها وورقة العمل الفرعية؟ لست متأكدًا من مكان استبدال / إدخال xDic.Add Application.Caller.Address، xFindCell.Offset (0، xCol - 1). Address & "|" & LookupRng.Parent.Nam و Sheets (Split (xDic.Items (I)، "|") (1)). Range (Split (xDic.Items (I)، "|") (0)). نسخ


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

شكرًا مرة أخرى ، أتمنى لك يومًا سعيدًا :)
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحباً


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

لا أحصل على أي أخطاء ويقوم بالبحث ، ولكن نظرًا لوجود قيمة البحث الخاصة بي في ورقة عمل أخرى (سيناريو أكثر احتمالية) ، فإنه لا يسحب التنسيق. هل هناك تعديل على الكود يمكنني إجراؤه لذلك؟ (كن محددًا جدًا فيما يتعلق بالمكان الذي يجب أن يسير فيه التغيير لأنني مبتدئ في البرمجة) شكرًا لك! أنا متحمس لإضافة هذه الميزة إلى أحد جداول البيانات الخاصة بي !!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، أي حظ في هذا السؤال ، كيف يمكننا الحصول على التنسيق للبحث عبر الأوراق؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
تسعى أيضا للقرص.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أيضًا ، إذا أضفت صيغتك كجزء من عبارة "If" (انظر أدناه) ، فإنها تنسق الخلية كما تريد LOL (أو على الأقل يبدو كذلك. خلية واحدة ، أصبح النص مظللًا وغامقًا مع حد علوي على الخلية ؛ خلية أخرى ، يتم توسيط النص)


= IF ($ F19 = ""، ""، LookupKeepFormat (F19، 'Item #s'! $ A $ 1: $ M $ 1226,2،XNUMX))
تم تصغير هذا التعليق بواسطة المشرف على الموقع
لقد جربت هذا الشخص الذي يسحب الخلفية الملونة فقط وأحصل على نفس الخطأ. خطأ في الترجمة: تم اكتشاف اسم غامض. انقر فوق "موافق" ويبرز xDic. أي اقتراحات؟ لست معتادًا على كل هذا ، لذا يرجى المساعدة / الشرح :) شكرًا مقدمًا
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا جيني ،
لا تنس تمكين خيار Microsoft Script Runtime كما هو مذكور في الخطوة 4.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا. لقد قمت بإنشاء جدول بيانات فارغ وقمت بتكرار المثال الخاص بك في Excel 2013 ، ولكن استمر في الحصول على خطأ تجميع: خطأ في بناء الجملة وتم تمييز Dim I As Long. هل هناك شيء مفقود؟ أود أن أحصل على هذا العمل. شكرًا لك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا لورا،
لا تنس تمكين خيار Microsoft Script Runtime كما هو مذكور في الخطوة 4.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، لقد كنت أستخدم الكود أعلاه في Excel 2010 دون أي مشاكل حتى الآن. ومع ذلك ، تمت ترقيتي مؤخرًا إلى Office 2016 والآن يتعطل الرمز في Excel في كل مرة أحاول فيها ملء أكثر من صف واحد. لسوء الحظ ، لا يعطيني خطأ بخلاف "توقف Microsoft Excel عن العمل". كنت أتساءل عما إذا كنت قد صادفت هذه المشكلة سابقًا ، وإذا كان هناك شيء يتعين علي فعله لإنجاحه في عام 2016. شكرًا!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا لي ،
يعمل الرمز بشكل جيد في Excel 2016 الخاص بي. نحاول ترقية الكود لحل المشكلة. شكرا لك على تعليقك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، شكرًا على الرمز. لا أحصل على أي رسالة خطأ ولكن الصيغة تعمل فقط كما لو كانت وظيفة vlookup عادية. من فضلك هل يمكنك المساعدة؟ شكرا على وقتك.
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبا

لدي نفس المشكلة بالضبط ، هل اكتشفت كيفية حلها؟

شكر!
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، تلقيت الخطأ "خطأ في التحويل البرمجي: تم اكتشاف اسم وديع: xDic
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، تلقيت الخطأ "خطأ في التحويل البرمجي: تم اكتشاف اسم وديع: xDic
تم تصغير هذا التعليق بواسطة المشرف على الموقع
مرحبًا ، أنا جديد في استخدام VBA وحاولت استخدام هذا الرمز في جدول البيانات الخاص بي ، لكن تنسيق النص في علامة التبويب Rec2 لا ينتقل إلى علامة التبويب Rec عند استخدام البحث. أي مساعدة سيكون موضع تقدير كبير. شكرا بات
تم تصغير هذا التعليق بواسطة المشرف على الموقع
هنا هو الملف والموافقة المسبقة عن علم
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أحصل على نفس خطأ الاسم الغامض - هل تمكن أي شخص من حلها؟
تم تصغير هذا التعليق بواسطة المشرف على الموقع
أحصل على نفس خطأ الاسم الغامض - هل تمكن أي شخص من حلها؟
لا توجد تعليقات منشورة هنا حتى الآن
عرض المزيد