matrex 300 قام بنشر سبتمبر 22 قام بنشر سبتمبر 22 اولا السلام عليكم ورحمة الله وبركاتة ثانيا شكرا مقدما علي المساعدة والدعم الدائم من اعضاء المنتدي العظيم ثالثا محتاج مساعدة تصميم كود vba عندي نموذج لملف excel موجود به عدد من البيانات محتاج اصمم كود يعمل كما الاتي:- 1- لو الخلية رقم N3 <>"" تكون قمية الخلية x3 ="كبير" 2- لو الخلية رقم m3='" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اكبر من 1 سنة يكون قمية الخلية x3=" الاول أ " 3- لو الخلية رقم m3='" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اقل من 1 سنة يكون قمية الخلية x3=" الاول ب " 4- لو الخلية رقم l3 <>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اكبر من 3 سنة يكون قمية الخلية x3=" الثاني أ " 5- لو الخلية رقم l3 <>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اقل من 3 سنة يكون قمية الخلية x3=" الثاني ب" 6- لو الخلية رقم k3 <>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اكبر من 6 سنة يكون قمية الخلية x3=" الثالث أ " 7- لو الخلية رقم k3 <>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اقل من 6 سنة وحتي 3 سنوات يكون قمية الخلية x3=" الثالث ب" 8- لو الخلية رقم k3 <>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اقل من 3 سنة يكون قمية الخلية x3=" الثالث ج" 9- لو الخلية رقم j3<>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اكبر من او يساوي 2 سنة يكون قمية الخلية x3=" الرابع أ" 10- لو الخلية رقم j3<>"" و مجموع السنين والاشهر والايام في الخلية w3وv3وu3 على التوالي اقل من 2 سنة يكون قمية الخلية x3=" الرابع ب" ولكم جزيل الشكر والعرفان ونكم نتعلم تحويل من اجر اساسي الي اجر وظيفي.xlsx
محمد هشام. قام بنشر سبتمبر 22 قام بنشر سبتمبر 22 وعليكم السلام ورحمة الله تعالى وبركاته جرب هدا Sub Test_EvaluateConditions() Dim WS As Worksheet: Set WS = Sheets("Sheet1") Dim Irow As Long, n As Long, OnRng As Variant, a() As Variant Irow = WS.Cells(WS.Rows.Count, "N").End(xlUp).Row OnRng = WS.Range("J3:W" & Irow).Value ReDim a(1 To UBound(OnRng), 1 To 1) For i = 1 To UBound(OnRng, 1) n = Val(OnRng(i, 14)) * 365 + Val(OnRng(i, 13)) * 30 + Val(OnRng(i, 12)) a(i, 1) = Choose( _ Application.WorksheetFunction.Match( _ True, Array( _ OnRng(i, 9) <> "", _ OnRng(i, 8) = "" And n > 365, _ OnRng(i, 8) = "" And n <= 365, _ OnRng(i, 7) <> "" And n > 3 * 365, _ OnRng(i, 7) <> "" And n <= 3 * 365, _ OnRng(i, 6) <> "" And n > 6 * 365, _ OnRng(i, 6) <> "" And n <= 6 * 365 And n >= 3 * 365, _ OnRng(i, 6) <> "" And n < 3 * 365, _ OnRng(i, 5) <> "" And n >= 2 * 365, _ OnRng(i, 5) <> "" And n < 2 * 365 _ ), 0 _ ), _ "كبير", "الأول أ", "الأول ب", "الثاني أ", "الثاني ب", "الثالث أ", "الثالث ب", "الثالث ج", "الرابع أ", "الرابع ب" _ ) Next i WS.[X3].Resize(UBound(a, 1), 1).Value = a End Sub 1
محمد هشام. قام بنشر سبتمبر 22 قام بنشر سبتمبر 22 أخي يصعب تتبع جميع الشروط للتأكد من صحة البيانات يرجى إظافة بعض التواريخ في اكثر من صف مع النتائج المتوقعة يدويا لنتمكن من تحديد مكان الخطأ
أفضل إجابة عبدالله بشير عبدالله قام بنشر سبتمبر 23 أفضل إجابة قام بنشر سبتمبر 23 السلام عليكم ورحمة الله وبركاته بعد اذن استاذنا ومعلمنا محمد هشام وحسب فهمى للطلب الكود Sub test() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim years As Long, months As Long, days As Long Dim totalMonths As Long Dim data As Variant Dim result() As Variant Application.ScreenUpdating = False Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row data = ws.Range("A3:W" & lastRow).Value ReDim result(1 To UBound(data, 1), 1 To 1) For i = 1 To UBound(data, 1) If data(i, 2) = "" Then result(i, 1) = "" Else years = IIf(IsNumeric(data(i, 23)), data(i, 23), 0) months = IIf(IsNumeric(data(i, 22)), data(i, 22), 0) days = IIf(IsNumeric(data(i, 21)), data(i, 21), 0) totalMonths = (years * 12) + months + Int(days / 30) Select Case True Case data(i, 14) <> "" result(i, 1) = "كبير" Case data(i, 13) <> "" If totalMonths >= 12 Then result(i, 1) = "الاول أ" Else result(i, 1) = "الاول ب" End If Case data(i, 12) <> "" If totalMonths >= 36 Then result(i, 1) = "الثاني أ" Else result(i, 1) = "الثاني ب" End If Case data(i, 11) <> "" If totalMonths >= 72 Then result(i, 1) = "الثالث أ" ElseIf totalMonths >= 36 Then result(i, 1) = "الثالث ب" Else result(i, 1) = "الثالث ج" End If Case data(i, 10) <> "" If totalMonths >= 24 Then result(i, 1) = "الرابع أ" Else result(i, 1) = "الرابع ب" End If End Select End If Next i ws.Range("X3:X" & lastRow).Value = result Application.ScreenUpdating = True End Sub الملف تحويل من اجر اساسي الي اجر وظيفي (2).xlsb 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.