أبوالباسل قام بنشر نوفمبر 24, 2024 قام بنشر نوفمبر 24, 2024 السلام عليكم ورحمة الله وبركاته عندي مجموعة عملاء مرتبين حسب ترتيبهم في حجم التعامل (العامود باللون الأصفر) ، لكن عندما يتم تحصيل دفعات إسبوعية منهم يتم ترتيبهم قربهم لبعض (العامود باللون الأخضر) لتوفير الجهد والوقت. إخترت دالة Vlookup للبحث عن اسم العميل في جدول الترتيب حسب حجم التعامل .... ثم إحضار رقم ترتيب خط السير من جدول خط السير وإضافته لجدول الترتيب حسب حجم التعامل. إلا أنها لم تعمل ... ممكن أعرف السبب. خط السير.xlsx 1
محمد هشام. قام بنشر نوفمبر 25, 2024 قام بنشر نوفمبر 25, 2024 وعليكم السلام ورحمة الله تعالى وبركاته جرب إستخدام إحدى الصيغ التالية =IFERROR(INDEX($G$3:$G$121, MATCH(C3, $H$3:$H$121, 0)), "غير موجود") 'أو =XLOOKUP(C3, $H$3:$H$121, $G$3:$G$121, "غير موجود") بالأكواد Option Explicit Sub UpdateOrder() Dim WS As Worksheet, lastRow As Long, i As Long Dim Client As String, tmp As Variant Set WS = Sheets("خط السير") lastRow = 120 Application.ScreenUpdating = False WS.Range("b3:b" & lastRow).ClearContents For i = 3 To lastRow Client = WS.Cells(i, "C").Value If Client <> "" Then tmp = Application.Match(Client, WS.Range("H3:H" & lastRow), 0) If Not IsError(tmp) Then WS.Cells(i, "B").Value = WS.Cells(tmp + 2, "G").Value Else WS.Cells(i, "B").Value = "غير موجود" End If End If Next i Application.ScreenUpdating = True End Sub خط السير.rar 2
أبوالباسل قام بنشر نوفمبر 25, 2024 الكاتب قام بنشر نوفمبر 25, 2024 ما الخطأ في معادلتي ؟ 16 ساعات مضت, محمد هشام. said: وعليكم السلام ورحمة الله تعالى وبركاته جرب إستخدام إحدى الصيغ التالية =IFERROR(INDEX($G$3:$G$121, MATCH(C3, $H$3:$H$121, 0)), "غير موجود") 'أو =XLOOKUP(C3, $H$3:$H$121, $G$3:$G$121, "غير موجود") بالأكواد Option Explicit Sub UpdateOrder() Dim WS As Worksheet, lastRow As Long, i As Long Dim Client As String, tmp As Variant Set WS = Sheets("خط السير") lastRow = 120 Application.ScreenUpdating = False WS.Range("b3:b" & lastRow).ClearContents For i = 3 To lastRow Client = WS.Cells(i, "C").Value If Client <> "" Then tmp = Application.Match(Client, WS.Range("H3:H" & lastRow), 0) If Not IsError(tmp) Then WS.Cells(i, "B").Value = WS.Cells(tmp + 2, "G").Value Else WS.Cells(i, "B").Value = "غير موجود" End If End If Next i Application.ScreenUpdating = True End Sub خط السير.rar 40.55 kB · 9 downloads
تمت الإجابة محمد هشام. قام بنشر نوفمبر 25, 2024 تمت الإجابة قام بنشر نوفمبر 25, 2024 اخي @أبوالباسل دالة VLOOKUP لديها قاعدة أساسية يجب الإنتباه إليها فهي تعمل فقط من اليسار إلى اليمين بمعنى تبحث دائما في العمود الأول من النطاق المحدد وهو في حالتك العمود G لكنك تريد البحث عن رقم سير باستخدام العمود H (الذي يحتوي على أسماء العملاء) وهذا يخالف طريقة عمل VLOOKUP لأن العمود H ليس العمود الأول بإختصار دالة VLOOKUP لا يمكنها البحث في عمود ليس هو الأول ضمن نطاق البيانات لهدا حاولنا إستخدام بدائل أخرى مثل INDEX و MATCH هذه الدوال لا تعتمد على ترتيب الأعمدة للتوضيح أكثر حاول عكس ترتيب الأعمدة بجعل عمود أسماء العملاء على اليمين وجعل عمود سير يسارا ووضع المعادلة الخاصة بك على الشكل التالي =IF(C3<>"", IFERROR(VLOOKUP(C3, $G$3:$H$121, 2, 0), "غير موجود"), "") كما تلاحظ VLOOKUP الآن تبحث في العمود H (أسماء العملاء) لأنه أصبح العمود الأول و تسترجع القيمة المقابلة من العمود G (سير ) بنجاح خط السير-VLOOKUP.xlsx 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.