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