اذهب الي المحتوي
أوفيسنا

ربط خليتين ببعضهما البعض عن طريق التعليمة vlookup


الردود الموصى بها

تحيه طيبة لجميع أعضاء المنتدى .. وتحيه خاصة للأستاذ محمد حجازي على إبداعاته ومشاركاته المتميزة

لقد أطلعت على مشاركةالأخ محمد حجازي بخصوص استخدام التعليمة vlookup عن طريق أكواد الفيجوال بيسك .. وقد أعجبتني كثيراً :

http://www.officena.net/ib/index.php?showtopic=6215

لكن لدي سؤال هو: هل من الممكن ربط خليتين مع بعضهما البعض عن طريق التعليمة vlookup .. بعبارة أخرى لدي جدول مكون من أسماء الموظفين وأرقامهم الوظيفية .. وما أريده هو عندما أكتب اسم الموظف في الخلية C8 يظهر رقمة الوظيفي في الخلية F8، وعندما أكتب رقمه الوظيفي في الخلية F8 يظهر اسمه في الخلية C8.

أرجوا أن يكون سؤالي واضحاً

ولكي يكون السؤال أكثر وضوحاً قمت بإرفاق ملف موضح فيه كل ما أريده.

شكراً للجميع،

:fff:

Employee_List.rar

تم تعديل بواسطه LoveCandle
رابط هذا التعليق
شارك

السلام عليكم ...

بالنسبة لسؤالك و اجهتني مشكلتين :

المشكلة الأولى :

تكمن في الدالة VLOOKUP وذلك لأنها تعتمد على البحث عن العامود الأول من المجال المحدد وهذا لا ينطبق في الاتجاهين . لذلك قمت بإضافة العامود H لحل المشكلة.

المشكلة الثانية :

تكمن في الحدث الذي اعتمدت عليه لتشغيل الكود ، وهو الحدث Change مع الهدف Worksheet ، وبما أن الكود يعمل أيضاً على تغيير الخلية المقابلة فهذا سيؤدي إلى تفجير الحدث Change مرة أخرى و هكذااااااااا نشئت حلقة متكررة من الكود نفسة ، ولهذا فقد حللت المشكلة عن طريق إضافة المتغير الساكن MyCell .

الكود هوالتالي:

Private Sub Worksheet_Change(ByVal Target As Range)
  On Error GoTo NoValue
  Static MyCell As Boolean
  If MyCell = False Then
    If Target.Address = "$C$8" Then
      MyCell = True
      Me.Range("F8") = Application.WorksheetFunction.VLookup(Target.Value, Me.Range("I9:J12").Value, 2, False)
      Exit Sub
    ElseIf Target.Address = "$F$8" Then
      MyCell = True
      Me.Range("C8") = Application.WorksheetFunction.VLookup(Target.Value, Me.Range("H9:I12").Value, 2, False)
    End If
  Else
    MyCell = False
  End If
  Exit Sub

NoValue:
  If Err <> 1004 Then
    MsgBox Err.Description
  End If
End Sub

بالتوفيق :fff:

Employee_List1.zip

رابط هذا التعليق
شارك

مليون شكر لك يا أستاذ محمد حجازي .. وكثر الله من أمثالك

لقد طرحت السؤال وكنت على ثقة تامة بأنك سوف تجد له الحل المناسب

وبالنسبة للبحث في الإتجاه الأخر من الأعمدة (Left Lookup) فقد وجدت قبل فترة في أحد المواقع الأجنبية معادلة تقوم بهذا الغرض .. وقمت بإرفاقها .. وأتمنى أن يستفيد منها الجميع.

شكراً لك مرة أخرى

:fff::fff:

Left_Lookup.rar

تم تعديل بواسطه LoveCandle
رابط هذا التعليق
شارك

  • 1 year later...

أعتقد أن هذا اكود أكثر إختصاراً:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$2" Then
[E2] = Application.WorksheetFunction.VLookup([D2], [D4:E18], 2, 0)

ElseIf Target.Address = "$E$2" Then
[D2] = Application.WorksheetFunction.VLookup([E2], [E4:F18], 2, 0)

End If
End Sub

2_sides_Vlookup.rar

رابط هذا التعليق
شارك

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information