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

الـعيدروس

المشرفين السابقين
  • Posts

    3,277
  • تاريخ الانضمام

  • Days Won

    20

كل منشورات العضو الـعيدروس

  1. جرب الكود التالي Public Sub A_Add() Dim Sh As Worksheet, Sht As Worksheet Set Sht = Sheets("Sheet2") Set Sh = Sheets("Sheet1") i = 1 Lr = Sh.Cells(Rows.Count, 1).End(xlUp).Row For Each R In Sh.Range("A1:J" & Lr).Rows A = Join(Application.Index(R.Value, 0), ",") B = Replace(A, "ES", "MR") B = Mid(B, 1, InStr(1, B, Split(B, ",")(3)) - 1) & Adm("0.00,", 3) & Split(B, ",")(7) & "." & String(2, "0") & Adm(",0.00", 2) A = A & String(3, "0") ii = Sht.Cells(Rows.Count, 1).End(xlUp).Row + 1 Sht.Cells(ii, 1) = Choose(1, A, B) Sht.Cells(ii + 1, 1) = Choose(2, A, B) i = i + 1: ii = ii + 1 Next End Sub Private Function Adm(Strn$, Ln&) Adm = Application.Rept(Strn, Ln) End Function
  2. ارى باقي الاوراق بها معادلات وكيف تريد الترحيل اليها اكتب قيد واعطيني سمبل من النتيجه التي تريدها كي افهم طلبك وان شاء الله خير
  3. ارفق صورة للخطاء مع توضيح في اي سطر فالكود ظهر الخطاء
  4. اخي ياسر فتحي حفظك الله اسعدني مرورك العطر وكلماتك الطيبه تقبل تحياتي وشكري
  5. هذا ملفك وبه الكود بعد كتابة القيد انقر زر ترحيل القيد يومية الأمريكية.rar
  6. على هذ الرابط http://www.officena.net/ib/topic/64789-يومية-امريكية/?do=findComment&comment=421655
  7. السلام عليكم جرب هذا الكود Sub Abad_Tr() Dim Sh As Worksheet Dim Shn As Worksheet Dim Cl, Cl1, Rw Dim Nm_1 As String Set Sh = Sheets("قيد اليومية") For R = 10 To 32 If Sh.Cells(R, "H") <> "" Then If Val(Sh.Cells(R, "D")) <> Val(Sh.Cells(R, "E")) Then MsgBox "يوجد خلل في القيد فارق بين الدائن والمدين" & R Exit For Exit Sub End If If Sh.Cells(R, "D") <> "" Or Sh.Cells(R, "E") <> "" _ Or Sh.Cells(R, "F") <> "" Or Sh.Cells(R, "G") <> "" _ Or Sh.Cells(R, "H") <> "" Then Nm_1 = Shet_My(Sh.Cells(R, "H")) If My_Shet(Nm_1) = True Then Set Shn = Sheets(Nm_1) With Shn Cl = Clumn_My(Shn, Sh.Cells(R, 6), "F") Cl1 = Clumn_My(Shn, Sh.Cells(R, 7), "G") Rw = .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Row .Cells(Rw, Cl) = Sh.Cells(R, 4) .Cells(Rw, Cl1) = Sh.Cells(R, 5) .Cells(Rw, 3) = Sh.Cells(R, 8) .Cells(Rw, 1) = Sh.Cells(7, 9) .Cells(Rw, 2) = Sh.Cells(4, 7) & "/" & Sh.Cells(4, 6) & "/" & Sh.Cells(4, 5) End With End If Else MsgBox "يوجد فراغ في احد بنود القيد قم بتصحيحه واعد تنفيذ الكود" Exit For Exit Sub End If End If Next Sh.Range("D10:I32").ClearContents Sh.Range("I7").ClearContents End Sub Private Function Shet_My(Nm As String) As String Dim Sht As Worksheet For Each Sht In Sheets If Nm Like "*" & Sht.Name & "*" Then Shet_My = Sht.Name Exit Function End If Next End Function Function My_Shet(Sh_Nm As String) As Boolean If Sh_Nm = "" Then My_Shet = False: Exit Function My_Shet = Evaluate("ISREF('" & Sh_Nm & "'!A1)") End Function Private Function Clumn_My(Sn As Worksheet, Nm$, Num As String) As Integer Dim C, Lc Lc = Sn.Range(Split(Sn.UsedRange.Address, "$")(3) & 1).Column For C = 4 To Lc If Sn.Cells(4, C) Like Nm Then Select Case Num Case Is = "F" Clumn_My = Sn.Cells(4, C).Column Case Is = "G" Clumn_My = Sn.Cells(4, C + 1).Column End Select Exit Function End If Next End Function
  8. ارفق الملف لم اراه اضغط ملف الاكسل ثم ارفقه في المشاركه
  9. السلام عليكم الى حلول الاخوة الكافيه الوافيه بطريقه اخرى Public Ali_1() Dim Lr&, Rw&, Rng As Range Application.ScreenUpdating = False Lr = Range("A" & Rows.Count).End(xlUp).Row: Range("A3:B" & Lr).Copy [E3] Set Rng = Range("E" & Lr + 10) For Rw = 3 To Lr If Application.CountIf(Range("E3:E" & Rw), Range("E" & Rw)) > 1 Then Set Rng = Union(Rng, Range("E" & Rw)) Else Cells(Rw, 6) = Application.SumIf(Range("E:E"), Range("E" & Rw), Columns(6)) End If Next Rw Union(Rng, Rng.Offset(0, 1)).Delete Shift:=xlUp: Set Rng = Nothing Application.ScreenUpdating = True End Sub
  10. السلام عليكم اضن الكثير منا يعلم ماهي الوظائف الإضافيه في الاكسل ومدى اهميتها في اختصار الكثير من الوقت للعمل على روتين معين لأكثر من مصنف انا سأطرح لكم الفكرة والتطبيق والاليه التي استخدمت بها تلك الوظيفه الإضافية أولاً ماهي الوظائف الإضافيه ؟ كخطوة اولى: توضيح وحفظ الوظيفه - هيا عباره عن ملف اكسل به اكواد او فورم او داله ويحفظ بصيغة "Excel Add-In" في المسار "AppData\Roaming\Microsoft\AddIns" او في اي مجلد تريد يكون موقع له فرضاً سميناها "Aosamh" وعند الحاجه لتلك الوظيفه تقوم بتفعيل الوظيفه كي تستخدمها للملف الذي تعمل عليه الخطوة الثانية: تفعيل الوظيفه ( بعد ان حفظتها بالخطوة الاولى ) -من خيارات الاكسل - الوظائف الإضافية - إدارة الوظائف الإظافيه Excel ( تضغط زر المسمى "إنتقال" ) ومن ثم تحفز الوظيفه . الفكرة كالتالي : تقرير مخزون عبر برنامج محاسبي اصدره الى الاكسل واقوم بعمل بعض التنسيقات والتعديلات عليه بشكل اتوماتيك واستخرج منه اعمدة معينه للعمل عليها غرضي من هذه الطريقة عمل " تقرير لأصناف معينه لعمل خصم عليها بطريقة يدويه" خصم يدخل يدوي ومن ثم اجمالي الفارق بين سعر التكلفه القديم وسعر التكلفه الجديد واجمالي الفارق لكل الاصناف في نهاية التقرير ماتطلب علي استخدامة لأنجز تلك الفكره : 1- تصدير التقرير من البرنامج المحاسبي 2- معرفة بعض الكلمات الاساسيه في التقرير المستخرج من البرنامج المحاسبي ( لمعرفة ان الملف هو مانريده كي نفعل عليه الوظيفة الاضافية) 3- عمل بعض التعديلات على الملف من الغاء دمج بعض الخلايا وحذف بعض الاعمدة التي لااستخدمها للغرض الذي اريده وماسبق ذكرة الـ 3 البنود منها عملتها بظريقه يدوية ومن ثم بالكود كي يقوم بما عملته عند استدعائي للوظيفة ( 2 و 3 ) 4- عمل في بعض الاعمدة معادلات عبر الكود ومنها اجمالي التقرير بعد اضافة القيم اليدويه 5- انشاء فورم بحث للبحث عن الاصناف في التقرير سواء برقم الصنف او مرجعه الاكواد المستخدمة في ملف الوظيفة الإضافية كالتالي : 1- كود حدث فتح ملف الاكسل "Auto_Open" -استخدمناه لكي نفعل كود التحقق من ان الملف المفتوح حالياً هو مانريده "تقرير المخزون" ام لا الكود في حدث فتح المصنف بعد 3 ثواني من فتح المصنف ينفذ الكود المسمى "Action_Abad" Sub Auto_Open() Application.OnTime Now + TimeValue("00:00:03"), "Action_Abad" End Sub هذا كود "Action_Abad" يقوم بتنفيذ الدالة "Check_Work" واذا كان نتيجة الدالة True يعني هو الملف المطلوب دالة "Check_Work" تقوم بالبحث في المصنف هل يوجد كلمة "تقييم المخزون" اذا تحقق الشرط تقوم بالتالي Public Const Trgt As String = "تقييم المخزون" Public Function Check_Work() Dim Rng_Chk For Each Rng_Chk In ActiveWorkbook.ActiveSheet.UsedRange.Cells If Trim(Rng_Chk) Like Trgt Then Bl_Open = True Exit Function End If Next End Function تقوم بإنشاء زر اختصار للكود "Ali_Tk" في تبويب الوظائف الاضافية Sub Action_Abad() '=============== Check_Work '' دالة التحقق من الملف المفتوح حالياً '=============== If Bl_Open = True Then Dim cb As CommandBar Dim ctrl As CommandBarControl On Error Resume Next Application.CommandBars("Tol_Abad").Delete On Error GoTo 0 Set cb = Application.CommandBars.Add(Name:="Tol_Abad") With cb .Visible = True .Position = msoBarTop Set ctrl = .Controls.Add(Type:=msoControlButton) With ctrl .BeginGroup = True .Style = msoButtonIconAndCaption .Caption = "تقرير_خصم" .FaceId = 107 .OnAction = "Ali_Tk" '' الزر يقوم بتشغيل كود عمل التنسيقات وحذف اعمدة من تقرير المخزون .TooltipText = "تقرير خصم لأصناف" End With End With Bl_Open = False End If End Sub وهذا كود "Ali_Tk" الذي يقوم بعمل تنسيقات للتقرير واضافة اعمدة ودوال واستخراج الاعمدة الاساسية في مصفوفة "Arr" Sub Ali_Tk() Dim Arr Dim RR, Mord, On_Rw Dim Rm As Range Dim Rnn As Range, Rmm As Range Dim Rng As Range A_Application False ActiveWorkbook.ActiveSheet.UsedRange.UnMerge Arr = Array("تقييم المخزون", "‏المورد :‏", "‏م‏", "‏رقم الصنف‏", "‏وصف الصنف‏", "‏رقم المرجع‏", "‏إجمالي الكمية‏", "‏السعر‏") For Each RR In ActiveWorkbook.ActiveSheet.UsedRange.Cells For Each Ar In Arr If Trim(RR) Like Trim(Ar) Then Select Case Trim(RR) Case Is = Arr(0) Case Is = Arr(1) RR.Select Lrm = Selection.End(xlToLeft).Column '' إيجاد عمود اسم المورد Mord = CStr(S_Nm_Ali(Cells(RR.Row, Lrm))) '' إســم المورد On_Rw = RR.Row '' أول صف للجدول Case Else If Not RR Is Nothing Then If Rm Is Nothing Then Set Rm = RR Else Set Rm = Union(Rm, RR) End If End If End Select End If Next Next Rm.EntireColumn.Hidden = True Set Rng = Range("A1:AB1") '************************************************************* Rng.SpecialCells(xlCellTypeVisible).EntireColumn.Delete Range("A1:A" & On_Rw).EntireRow.Delete ActiveSheet.UsedRange.EntireColumn.Hidden = False '************************************************************* Range("A:A,B:B").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove '************************************************************* Rows("1:1").RowHeight = 40 Rows("2:2").RowHeight = 28.5 Range("C2") = "تكلفة جديدة" Range("A2") = "الفرق" ActiveSheet.UsedRange.EntireColumn.AutoFit Columns("F:F").ColumnWidth = 11 Columns("E:E").ColumnWidth = 9.14 Columns("G:G").ColumnWidth = 7.57 Columns("G:G").ColumnWidth = 11.57 Columns("G:G").ColumnWidth = 10.71 R = 3 Lr = Cells(Rows.Count, 2).End(xlUp).Row For i = R To Lr Cells(i, 1).Formula = "=IF(RC[2]="""","""",CEILING(IF(RC[2]="""","""",(RC[3]*RC[1])-(RC[3]*RC[2])),1))" Next With Range("A" & Lr + 1) .Formula = "=SUBTOTAL(9," & Range("A3:A" & Lr).Address(0, 0) & ")" .Offset(0, 1).Formula = "=SUBTOTAL(9," & Range("B3:B" & Lr).Address(0, 0) & ")" .Offset(0, 2).Formula = "=SUBTOTAL(9," & Range("C3:C" & Lr).Address(0, 0) & ")" .Offset(0, 3).Formula = "=SUBTOTAL(9," & Range("D3:D" & Lr).Address(0, 0) & ")" End With Range(Cells(3, 1), Cells(Lr + 1, 8)).Borders.Color = 1 Range(Cells(3, 1), Cells(Lr + 1, 8)).RowHeight = 24.75 Range(Cells(3, 1), Cells(Lr + 1, 8)).WrapText = False Columns("A:H").AutoFit Columns("A:D").ColumnWidth = 9 With Range(Cells(3, 1), Cells(Lr + 1, 8)) .HorizontalAlignment = xlRight .VerticalAlignment = xlCenter .Interior.ColorIndex = xlNone With Range("A" & Lr + 1 & ":H" & Lr + 1) .Interior.Color = RGB(252, 228, 214) .Font.ColorIndex = 23 .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With With Range("A2:H2") .Interior.Color = RGB(252, 228, 214) .Offset(-1, 0).Merge .Offset(-1, 0).RowHeight = 40 .Font.ColorIndex = 23 .Font.Bold = True .Borders.Color = 0 .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop End With End With With ActiveSheet.PageSetup .PrintArea = Range(Cells(1, 1), Cells(Lr + 1, 8)).Address .PrintTitleRows = "$1:$2" .PrintTitleColumns = "" .Zoom = 123 .LeftMargin = Application.InchesToPoints(3.93700787401575E-02) .RightMargin = Application.InchesToPoints(3.93700787401575E-02) .TopMargin = Application.InchesToPoints(3.93700787401575E-02) .BottomMargin = Application.InchesToPoints(3.93700787401575E-02) .HeaderMargin = Application.InchesToPoints(3.93700787401575E-02) .FooterMargin = Application.InchesToPoints(3.93700787401575E-02) .CenterHorizontally = True .CenterVertically = False End With Range("A3").Select ActiveWindow.FreezePanes = True ActiveWindow.SmallScroll Down:=12 Range("C3").Select With Range("A1") .Value = "(" & " طلب خصم بضاعة / " & Mord & " / للمؤسسة " & ")" .Font.Name = "Times New Roman" .Font.Size = 14 .Font.Bold = True .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With '===================== Action_Search '' إستدعاء كود إضافة زر اخر في تبويب الوظائف الإضافية _ لإنشاء زر في تبويب الوظائف الإضافية واسمه بحث ليقوم بتنفيذ كود فتح فورم البحث والتعديل '===================== A_Application True End Sub وفي نهاية الكود يستدعي الكود "Action_Search" ليضيف زر اخر في تبويب الوظائف الإضافية واسمه "بحث" لينفذ كود فتح " فورم البحث" Private Sub Action_Search() Dim cb As CommandBar Dim ctrl1 As CommandBarControl Set cb = Application.CommandBars("Tol_Abad") With cb .Position = msoBarTop Set ctrl1 = .Controls.Add(Type:=msoControlButton) With ctrl1 .BeginGroup = True .Style = msoButtonIconAndCaption .Caption = "بحث" .FaceId = 1100 .OnAction = "Show_Ali" .TooltipText = " بحث في بيانات الاصناف للمورد" End With End With '====================== Visbl_Control False '' الذي يقوم بعمل تنسيقات تلافياً لعدم الضغط عليه مره اخرى ' إخفاء زر المسمى تقرير_خصم '============== Action_Prnt '' إستدعاء كود لإضافة زر اخر بإسم طباعه لينفذ كود طباعة التقرير بعد الانتهاء من عمل التعديلات عليه '============= End Sub دالة " Visbl_Control" لتقوم بإخفاء زر " تقرير_خصم " تلافياً لعدم الضغط عليه مره اخرى Function Visbl_Control(Vis As Boolean) Application.CommandBars("Tol_Abad").Controls("تقرير_خصم").Visible = Vis End Function كود فتح فورم البحث المسمى " Show_Ali" Sub Show_Ali() Ali_Search.show 0 End Sub وفي نهاية كود "Action_Search" يستدعي كود المسمى "Action_Prnt" ليقوم بإنشاء زر واسمه "طباعه" لينفذ الكود المسمى "Prnt" Private Sub Action_Prnt() Dim cb As CommandBar Dim C As CommandBarControl Set cb = Application.CommandBars("Tol_Abad") With cb .Position = msoBarTop Set C = .Controls.Add(Type:=msoControlButton) With C .BeginGroup = True .Style = msoButtonIconAndCaption .Caption = "طباعه" .FaceId = 180 .OnAction = "Prnt" .TooltipText = " طباعة النتائج " End With End With End Sub وهذا كود الطباعه المسمى " Prnt" ليطبع التقرير بعد عمل التصفية للصفوف الملونه بلون معين Sub Prnt() With ActiveSheet .Range("A2:H2").Select Selection.AutoFilter Ln = .Cells(.Rows.Count, 2).End(xlUp).Row .Range(Cells(2, 1), Cells(Ln, 8)).AutoFilter Field:=6, Criteria1:=RGB(225, 225, 235), Operator:=xlFilterCellColor If .UsedRange.SpecialCells(xlCellTypeVisible).Count <= 24 Then MsgBox "لايوجد نتائج للطباعه", vbInformation, "" .Range("A2:H2").Select Selection.AutoFilter Exit Sub End If .Range("G2").EntireColumn.Hidden = True .PrintPreview .Range("G2").EntireColumn.Hidden = False .Range("A2:H2").Select Selection.AutoFilter .Range("A2").Select End With End Sub وهذا كود حدث اغلاق المصنف " Auto_close "ليقوم بحذف تبويب الوظائف الإضافية بما فيه من ازرار انشأناها وقت الاستخدام Sub Auto_close() On Error Resume Next Application.CommandBars("Tol_Abad").Delete Application.CommandBars("Benefits Survey Toolbar").Delete On Error GoTo 0 End Sub ماأرجوه من طرحي هذا اخذ فكره عن الوظائف الإضافية وبما يمكنها من استخدام اكواد ومعادلات مستحدثه في اكثر من ملف وقت الاستخدام وافكار ان شاء الله يستفاد منها - مرفق ملف شرح فيديو طريقة العمل - وملف التقرير المستخرج من البرنامج المحاسبي - وملف الاكواد والفورم وهو كوظيفة إضافية لم استطيع ارفاق الملفات حملتها عبر 4Share وهذا رابط المرفقات http://www.4shared.com/rar/x33ci575ba/_online.html والسلام عليكم
  11. جرب هذا التعديل على ملف الداتا الكامل على ملفك المرفق المختصر يعطي نتائج سليمه Private Function Ali(Ln As Long, Vl, Bl As String, Bln As Boolean) Dim Shet As Worksheet Dim Do_Ali Dim Ar() As Variant Dim iCnt& Dim X, A On Error Resume Next Set Shet = Sheets("Report") Set Do_Ali = CreateObject("Scripting.Dictionary") With Application .ScreenUpdating = False .EnableEvents = True DoEvents With Shet Lr = .Cells(.Rows.Count, 2).End(xlUp).Row Ar = .Range("A2:F" & Lr).Value: A = Bl For R = LBound(Ar, 1) To UBound(Ar, 1) If Ar(R, 3) = A Then If Not Bln Then If Vl = 3 Then ZZ = Ar(R, 2): ZZZ = Ar(R - 1, 2) If ZZZ <> ZZ Then X = X + 1 End If End If If Vl = 4 Then X = X + Ar(R, 6) End If End If If Do_Ali.exists(Ar(R, Ln)) Then Do_Ali.Item(Ar(R, Ln)) = Do_Ali.Item(Ar(R, Ln)) + 1 Else Do_Ali.Add Ar(R, Ln), 1 End If End If Next Ali = IIf(Vl = 1, Do_Ali.Count, X) End With .ScreenUpdating = True .EnableEvents = False End With Erase Ar Set Do_Ali = Nothing Set Shet = Nothing End Function Sub Ali_Count() Dim Sh As Worksheet Dim Sht As Worksheet Dim R, Rr, Cll, Lrr Set Sh = Sheets("Rank") Set Sht = Sheets("Report") With Sh Lrr = Sht.Cells(Rows.Count, 2).End(xlUp).Row Sht.Sort.SortFields.Add Key:=Sht.Range("A2:A" & Lrr), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With Sht.Sort .SetRange Sht.Range("A1:F" & Lrr) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Rr = 10: Cll = 13 For R = Rr To Cll If .Cells(R, 2) <> "" Then .Cells(R, 4) = Ali(1, 4, .Cells(R, 2), False) .Cells(R, 9) = Ali(1, 3, .Cells(R, 2), False) .Cells(R, 14) = Ali(4, 1, .Cells(R, 2), True) .Cells(R, 19) = Ali(1, 1, .Cells(R, 2), True) End If Next End With MsgBox "Greetings with Engineer / Yasser Fathi Al-Banna " End Sub
  12. السلام عليكم اخي الكريم ياسر فتحي الصبر الصبر ان شاء الله خير رغم قراءتي لطلبك سابقاً الا اني لم اوفق لفكرهعمليه تخدم ملفك السبب كبر حجم البيانات ان شاء الله لي محاوله ان وفقت سوف ارفقه تحياتي
  13. صحيح عدلت على المشاركه السابقه اخي ياسر الموقع قبل حوالي ساعه الا ماكان يقبل اكتب رد كان بيظهر مربع المرفقات فقط
  14. السلام عليكم اخي ياسر فتحي اشكرك على مرورك العطر ولك مثل دعائك اضعاف مضاعفه ان شاء الله الاخ والاستاذ ياسر خليل اليك المرفق ان شاء الله ان تم حل اشكاليته Kh_Srech_Al_###.rar
  15. جربته على الموقعين الذي اعلا وزبط الاول تظهر الرساله غير محجوز والثاني تظهر الرساله محجوز لاتنسى تضيف الـ " https://www. قبل اسم الدومين في شرط الكود
  16. السلام عليكم اكتب الشهر برقمه كالمرفق عموم اضغط الزر لتفيذ الكود امل ان يلبي طلبك مسابقة قراءة القران الكريم_111.rar
  17. صحيح اخي ياسر بعض الاسطر حذفت سهواً جرب المرفق Kh_Srech_Al_##.rar
  18. حط الخيار On مقابل الملفات الذي تود البحث فيها في العمود "F"
  19. السلام عليكم اخي ياسر هذا المرفق رفعته مره اخرى اضفت تعديلات بسيطه امل ان يعمل معك Kh_Srech_Al_#.rar
  20. السلام عليكم الاخ الحبيب ياسر خليل لازلنا في بداية الطريق تعدد الحلول يثري الموضوع ويكسب القارئ معرفه جزيت كل خير اخي الحبيب سعد عابد اسعد الله مساك يشهد الله ان المعزه متبادله احبك الله الذي احببتنا فيه اسعدني مرورك العطر تقبلو تحياتي وشكري
  21. هذا للمسح الداتا المنقوله Sub ClearConstants_1() Dim Sh As Worksheet Dim Rr, Cll Set Sh = Sheets("Rank") With Sh Rr = 10: Cll = 28 Union(.Range(Cells(Rr, 4), Cells(Cll, 4)), .Range(Cells(Rr, 9), Cells(Cll, 9)), _ .Range(Cells(Rr, 14), Cells(Cll, 14)), .Range(Cells(Rr, 19), Cells(Cll, 19))).ClearContents End With End Sub والرساله استبدل الكود المسمى Ali_Count بالتالي او انسخ هات الى اخر الكود قبل End Sub Sub Ali_Count() Dim Sh As Worksheet Dim R, Rr, Cll Set Sh = Sheets("Rank") With Sh Rr = 10: Cll = 28 For R = Rr To Cll If .Cells(R, 2) <> "" Then .Cells(R, 4) = Ali(1, 4, .Cells(R, 2), False) .Cells(R, 9) = Ali(1, 3, .Cells(R, 2), False) .Cells(R, 14) = Ali(4, 1, .Cells(R, 2), True) .Cells(R, 19) = Ali(1, 1, .Cells(R, 2), True) End If Next End With MsgBox "تم بحمد الله ", vbInformation, "تمت العمليه" Set Sh = Nothing End Sub
  22. السلام عليكم جرب الكود التالي Function Ali(Ln As Long, Vl, Bl As String, Bln As Boolean) Dim Shet As Worksheet Dim Do_Ali Dim Ar() As Variant Dim iCnt& Dim X, A Set Shet = Sheets("Report") Set Do_Ali = CreateObject("Scripting.Dictionary") With Application .ScreenUpdating = False .EnableEvents = True DoEvents With Shet Lr = .Cells(.Rows.Count, 2).End(xlUp).Row Ar = .Range("A2:F" & Lr).Value: A = Bl For R = LBound(Ar, 1) To UBound(Ar, 1) If Ar(R, 3) = A Then If Not Bln Then X = IIf(Vl = 3, X + 1, IIf(Vl = 4, X + Ar(R, 6), X + 1)) If Do_Ali.exists(Ar(R, Ln)) Then Do_Ali.Item(Ar(R, Ln)) = Do_Ali.Item(Ar(R, Ln)) + 1 Else Do_Ali.Add Ar(R, Ln), 1 End If End If Next Ali = IIf(Vl = 1, Do_Ali.Count, X) End With .ScreenUpdating = True .EnableEvents = False End With Erase Ar Set Do_Ali = Nothing Set Shet = Nothing End Function Sub Ali_Count() Dim Sh As Worksheet Dim R Set Sh = Sheets("Rank") For R = 10 To 28 With Sh If .Cells(R, 2) <> "" Then .Cells(R, 4) = Ali(1, 4, .Cells(R, 2), False) .Cells(R, 9) = Ali(1, 3, .Cells(R, 2), False) .Cells(R, 14) = Ali(4, 1, .Cells(R, 2), True) .Cells(R, 19) = Ali(1, 1, .Cells(R, 2), True) End If End With Next Set Sh = Nothing End Sub
  23. السلام عليكم تم التعديل السبب تفعيل حمايه للورقه تم التعديل جرب المرفق مصروفات-111.rar عذرا اخي وائل لم ارى ردك الا بعد المشاركه
  24. Sub Prnt_A() For i = Val([F6]) To Val([G6]) [G9].Value = Sheets("بيانات").Cells(i + 9, 1).Value ' ActiveSheet.PrintOut ' ActiveSheet.PrintPreview Next End Sub حدد الامر ActiveSheet.PrintOut
  25. اخ ياسر العربي حل جميل وهذا لتغير الفاصله في مدى الارقام Sub A() Dim R As Range For Each R In Range("B2:D" & Cells(Rows.Count, 2).End(xlUp).Row) R.Replace [i1], "." Next End Sub
×
×
  • اضف...

Important Information