memo20067 قام بنشر سبتمبر 17, 2021 قام بنشر سبتمبر 17, 2021 السلام عليكم ورحمة الله وبركاته .. لو سمحتم يا أهل الخبرة محتاج مساعدة فى الشيت ده محتاج اعمل قائمة منسدلة بأسماء المحافظات في شيت أخر واسم كل محافظة فى أول العمود ولكن يفصل بين كل عمود وأخر عمود اسعار وقائمة منسدلة فرعية أخرى ببيانات المدن بناء على اختيار المحافظة من القائمة الأولى وبعد اختيار المحافظة والمدينة يظهر السعر المقابل للمدينة وأكون شاكر جدا لحضراتكم.. وده ملف العمل اسعار الشحن.xlsx
أ / محمد صالح قام بنشر سبتمبر 17, 2021 قام بنشر سبتمبر 17, 2021 عليكم السلام و رحمة الله وبركاته إن شاء اللّه يكون هذا هو المطلوب تم استعمال أربعة أعمدة مساعدة في جلب البيانات حتى تعمل دوال البحث بدقة بالتوفيق اسعار الشحن.xlsx 1 1
أفضل إجابة lionheart قام بنشر سبتمبر 17, 2021 أفضل إجابة قام بنشر سبتمبر 17, 2021 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 1 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.