اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

محي الدين ابو البشر

الخبراء
  • Posts

    880
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    6

مشاركات المكتوبه بواسطه محي الدين ابو البشر

  1. بالاذن خيار آخر

    Sub test()
    Dim a, b
    Dim i&, ii&, c&
    With Sheets("Budget 2023")
    a = .Cells(2, 3).Resize(.Cells(Rows.Count, 3).End(xlUp).Row, .Cells(3, Columns.Count).End(xlToLeft).Column)
    ReDim b(1 To UBound(a), 1 To UBound(a, 2))
    End With
    c = 1
    For i = 1 To UBound(a)
        If Application.Sum(Application.Index(a, i, Evaluate("row(4" & ":" & UBound(a, 2) - 3 & ")"))) <> 0 Then
            For ii = 1 To UBound(a, 2)
                b(c, ii) = a(i, ii)
            Next
    c = c + 1
        End If
    Next
    Sheets("بعد التصفية").Cells(2, 3).Resize(c, UBound(b, 2)) = b
    End Sub

     

    • Like 1
  2.  تفضل

    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
     Dim a
     Dim i&, r&
     Dim ws As Worksheet, sh As Worksheet
     Set ws = Sheet1: Set sh = Sheet2
     With ws
    a = .Range(.Range("A10:G10"), .Range("A10:G10").End(xlDown))
     End With
        If Target.Address = "$F$8" Then
     r = Sheet1.Cells.Find(Target, , , 1).Column
           With CreateObject("scripting.dictionary")
            For i = 1 To UBound(a)
            If a(i, 1) = sh.Cells(8, 5) Then
                    If Not .exists(a(i, 1)) Then
                    .Add a(i, 1), a(i, r)
                    Else
                    .Item(a(i, 1)) = .Item(a(i, 1)) & "|" & a(i, r)
                     End If: End If
                     Next
                     a = Split(.items()(0), "|")
                    
                 With sh.Cells(10, 6)
           .Resize(Rows.Count - .Row + 1).ClearContents
           .Resize(UBound(a) + 1) = Application.Transpose(a)
       End
            End With
            End With
            End If
    End Sub

     

    رزان2.xlsm

    • Like 5
  3. تفضل أخي الكريم

    ربما؟

    Sub test2()
    Dim ws As Worksheet: Set ws = Sheets("التقرير")
    Dim sh As Worksheet: Set sh = Sheets("كشف الطباعة")
    Dim a, b, w
    Dim i&, c&, ii&, kk&
    Dim r As Range
    Dim f As String
    a = ws.Range(ws.Cells(6, 1), ws.Cells(6, 4).End(xlDown))
    b = ws.Range(ws.Cells(6, 6), ws.Cells(6, 7).End(xlDown))
    With CreateObject("scripting.dictionary")
            For i = 1 To UBound(a)
                    If Not .exists(a(i, 4)) Then
                    .Add a(i, 4), Array(a(i, 1), a(i, 2), a(i, 3))
                    Else
                    w = Application.Transpose(.Item(a(i, 4)))
                    ReDim Preserve w(1 To UBound(w), 1 To UBound(w, 2) + 1)
                    w = Application.Transpose(w)
                    For ii = 1 To 3
                    w(UBound(w), ii) = a(i, ii)
                    Next
                    .Item(a(i, 4)) = w
                    End If
            Next
        Set r = sh.Columns("a").Find("م", , , 1)
        If Not r Is Nothing Then
         f = r.Address: i = 1
            Do
                w = .Item(.Keys()(kk))
    1       [r].Offset(1).Resize(25, 3).ClearContents
             [r].Offset(1).Resize(b(i, 2), 3) = Application.IfError(Application.Index(w, _
                Evaluate("Row(" & 1 + c & ":" & c + b(i, 2) & ")"), [{1, 2,3}]), "")
                If i = UBound(b) Then Exit Sub
                If b(i, 1) = b(i + 1, 1) Then
                     Set r = sh.Columns("a").FindNext(r)
                     c = c + b(i, 2): i = i + 1
                     GoTo 1
                     Else: GoTo 2
                     End If
    2            kk = kk + 1: i = i + 1: c = 0
                 Set r = sh.Columns("a").FindNext(r)
            Loop Until r.Address = f
        End If
    End With
    End Sub

     

    ترحيل أسماء.xlsm

    • Like 3
  4. وعليكم السلام والرحمة

    كود:

    Sub test()
    Dim a
    Dim x&, i&, c&
    Dim r As Range
    Dim firstaddress As String
    With Sheets("التقرير")
    a = .Range(.Cells(6, 1), .Cells(6, 3).End(xlDown))
    x = .Cells(2, 6)
    End With
    With Sheets("كشف الطباعة")
        Set r = .Columns("a").Find("م", , , 1)
        If Not r Is Nothing Then
         firstaddress = r.Address
            Do
               [r].Offset(1).Resize(x, UBound(a, 2)) = Application.IfError(Application.Index(a, _
                                                                    Evaluate("Row(" & c + 1 & ":" & x + c & ")"), [{1, 2,3}]), "")
                Set r = .Columns("a").FindNext(r)
                c = c + x
            Loop Until r.Address = firstaddress
        End If
    End With
    End Sub

     

    ترحيل الاسماء.xlsm

    • Like 3
  5. عليكم السلام ورحمة الله وبركاته

    تفضل أخي الكريم

    Sub test()
    With Sheets("يومية الحضور والإنصراف").Range("B4:C" & Sheets("يومية الحضور والإنصراف").Cells(Rows.Count, 1).End(xlUp).Row)
    .Formula = "=IFERROR(VLOOKUP($A:$A,Table9,COLUMN(),0),"""")"
    .Value = .Value
    End With
    With Sheets("رصيد الأجازات").Range("B3:D" & Sheets("رصيد الأجازات").Cells(Rows.Count, 2).End(xlUp).Row)
    .Formula = "=IFERROR(VLOOKUP($A:$A,Table9,COLUMN(),0),"""")"
    .Offset(, 3).Resize(, 1).Formula = "=IFERROR(IF(DATEDIF([@[تاريخ التعيين]],$D$1,""D"")/30>3.1,""يستحق"",""""),"""")"
    .Offset(, 5).Resize(, 1).Formula = "=IF([@[معادلة الرصيد]]=""يستحق"",$O$1+[@[معالجة الرصيد]],0)"
    .Offset(, 6).Resize(, 1).Formula = "=[@[الرصيد المرحل]]+[@[رصيد 2023]]"
    .Offset(, 7).Resize(, 1).Formula = "=(COUNTIFS('يومية الحضور والإنصراف'!$A:$A,$A3,'يومية الحضور والإنصراف'!$H:$H,""أجازة"")+(COUNTIFS('يومية الحضور والإنصراف'!$A:$A,$A3,'يومية الحضور والإنصراف'!$H:$H,""أجازة مجمعة"")))"
    .Offset(, 8).Resize(, 1).Formula = "=(COUNTIFS('يومية الحضور والإنصراف'!$A:$A,$A4,'يومية الحضور والإنصراف'!$H:$H,""أجازة عارضة""))"
    .Offset(, 9).Resize(, 1).Formula = "=IF(E3=""يستحق"",$N$1-[@[ عارضة]],0)"
     .Offset(, 10).Resize(, 1).Formula = "=(([@[إجمالي الرصيد المستحق]]-([@[ سنوي]]+[@[ عارضة]]+[@[تسوية نقدي]])))-[@[باقي رصيد العارضة]]"
    .Offset(, 11).Resize(, 1).Formula = "=([@[باقي رصيد السنوي ]]+[@[باقي رصيد العارضة]])"
     With .Resize(, 12)
     .Value = .Value
     End With
    End With
    End Sub
    
    

     

    • Like 7
  6. يدوياً؟

    قم باختيار الجدول ( ليس من الخلايا وإنما كامل الأسطر) بمعني اضغط على الرقم 1 بجانب الخلية A1 نزولا حتى آخر الجدول) ثم CTR+ Copy

     ثم right click على أول خلية تريد النسخ فيها وقم باختيار (Insert Copied cells)

    ويمكن عمل ذلك بماكرو إذا أحببت

    • Like 1
  7. جرب هذا

    Sub Oval1_Click()
    Dim xDir As String
    Dim xFile As String
    Dim xRow As Long
     With Application.FileDialog(msoFileDialogFilePicker)
            .AllowMultiSelect = True
            .Title = "Please select the files"
            .Filters.Clear
            .Filters.Add "All supported files", "*.*"
    If .Show = -1 Then
        xDir = .SelectedItems(1)
        xFile = Dir(xDir & Application.PathSeparator & "*.docx")
        Do Until xFile = ""
            xRow = 0
            On Error Resume Next
            xRow = Application.Match(xFile, Range("A:A"), 0)
            If xRow > 0 Then
                Name xDir & Application.PathSeparator & xFile As _
                xDir & Application.PathSeparator & Cells(xRow, "B").Value
            End If
            xFile = Dir
        Loop
    End If
    End With
    End Sub

     

    • Like 1
×
×
  • اضف...

Important Information