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

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

قام بنشر

السلام عليكم ورحمة الله وبركاته .. لو سمحتم يا أهل الخبرة محتاج مساعدة فى الشيت ده

محتاج اعمل قائمة منسدلة بأسماء المحافظات في شيت أخر واسم كل محافظة فى أول العمود ولكن يفصل بين كل عمود وأخر عمود اسعار وقائمة منسدلة فرعية أخرى ببيانات المدن بناء على اختيار المحافظة من القائمة الأولى وبعد اختيار المحافظة والمدينة يظهر السعر المقابل للمدينة

وأكون شاكر جدا لحضراتكم.. وده ملف العمل

اسعار الشحن.xlsx

قام بنشر

عليكم السلام و رحمة الله وبركاته 

إن شاء اللّه يكون هذا هو المطلوب 

تم استعمال أربعة أعمدة مساعدة في جلب البيانات حتى تعمل دوال البحث بدقة

بالتوفيق

اسعار الشحن.xlsx

  • Like 1
  • Thanks 1
  • أفضل إجابة
قام بنشر

Mr. Mohamed's solution is simpler and better but this is my try using VBA in worksheet module

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x, r
    If Target.CountLarge > 1 Then Exit Sub
    Application.EnableEvents = False
        With Sheets(2)
            If Target.Address = "$E$5" Then
                If IsEmpty(Target) Then Target.Offset(, 1).ClearContents
                x = Application.Match(Target.Offset(, -1), .Rows(1), 0)
                r = Application.Match(Target.Value, .Columns(x), 0)
                If Not IsError(x) And Not IsError(r) Then Target.Offset(, 1).Value = .Cells(r, x).Offset(, 1).Value
            End If
        End With
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim x, c As Long, sList As String
    If Target.CountLarge > 1 Then Exit Sub
    Application.EnableEvents = False
        With Sheets(2)
            If Target.Address = "$D$5" Then
                For c = 1 To 53 Step 2
                    sList = sList & IIf(sList = Empty, Empty, ",") & .Cells(1, c).Value
                Next c
                With Target.Validation
                    .Delete
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="" & sList
                End With
                Target.Offset(, 1).Resize(1, 2).ClearContents
            ElseIf Target.Address = "$E$5" Then
                If IsEmpty(Target.Offset(, -1)) Then
                    Target = Empty
                Else
                    If Target = Empty Then
                        x = Application.Match(Target.Offset(, -1), .Rows(1), 0)
                        If Not IsError(x) Then
                            Target.Validation.Delete
                            Target.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & .Name & "!" & .Range(.Cells(2, x), .Cells(.Cells(Rows.Count, x).End(xlUp).Row, x)).Address
                        End If
                    End If
                End If
            End If
        End With
    Application.EnableEvents = True
End Sub

 

  • Like 1
  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information