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

الردود الموصى بها

قام بنشر

من فضلكم عندي جدول في اكسل مكون من 15 عمود وحوالى 5000 صف تحتوي على بيانات مدرسين

في نهاية كل شهر  تاتي الى مدرسة مكونة من اكثر 100 معلم بارقامهم القومية  اريد استخراج اسماء المعلمين بارقامهم القومية وبيانتهم كاملة من الشيت الاساسى بحيث يرحل اسماء المدرسة في شيت منفرد علما بان الشيت الاساسى فية جميع موظفين الادارة مرفق ملف للتوضيح وجزاكم الله خيرا

فهرس مايو عام11 2024.xlsx

قام بنشر (معدل)

يمكنك الاستفادة من هذا الكود التالي:

Sub ExtractNumbers()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim cell As Range
    Dim number As String
    Dim targetRange As Range
    Dim uniqueNumbers As New Collection
    Dim duplicateNumbers As New Collection
    Dim answer As Integer
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "M").End(xlUp).Row
    Set targetRange = ws.Range("R2:R" & lastRow)
    
    For Each cell In ws.Range("M2:M" & lastRow)
        number = cell.Value
        If IsNumeric(number) Then
            If Not uniqueNumbers.Contains(number) Then
                uniqueNumbers.Add number
                targetRange.Cells(uniqueNumbers.Count, 1).Value = number
            Else
                duplicateNumbers.Add number
            End If
        End If
    Next cell
    
    answer = MsgBox("عدد الأرقام القومية المستخرجة هو: " & uniqueNumbers.Count & vbCrLf & _
                    "هل تريد الترحيل بدون تكرار الأرقام؟" & vbCrLf & vbCrLf & _
                    "اختر موافق للترحيل بدون تكرار" & vbCrLf & _
                    "اختر إلغاء لحذف الأرقام المكررة" & vbCrLf & _
                    "اختر لا لتلوين الأرقام المكررة باللون الأحمر", vbYesNoCancel)
    
    If answer = vbYes Then
        ' ترحيل بدون تكرار
    ElseIf answer = vbNo Then
        ' حذف الأرقام المكررة
        For Each num In duplicateNumbers
            ws.Range("R2:R" & lastRow).Replace num, ""
        Next num
    ElseIf answer = vbCancel Then
        ' تلوين الأرقام المكررة باللون الأحمر
        For Each num In duplicateNumbers
            Set foundCell = ws.Range("R:R").Find(What:=num, LookIn:=xlValues, LookAt:=xlWhole)
            foundCell.Font.Color = RGB(255, 0, 0)
        Next num
    End If
End Sub

يمكنك تنفيذ هذا الكود عن طريق الذهاب إلى قائمة "مطور" ثم اختيار "ماكرو" وتحديد الكود وتشغيله. سيقوم الكود بإستخراج الأرقام القومية من العمود M وترحيلها إلى العمود R مع عمل رسالة تنبيه بعدد الأرقام المستخرجة وثلاثة خيارات لعملية الترحيل.

يرجى التأكد من حفظ العمود R قبل تنفيذ الكود حيث سيتم كتابة الأرقام القومية في هذا العمود.

وهذا كود ثاني سيقوم ببساطة باستخراج الأرقام القومية من العمود M ونقلها إلى العمود R دون عرض رسالة تنبيه أو تلوين الأرقام المكررة أو حذفها. يمكنك تنفيذ هذا الكود بنفس الطريقة المذكورة في الإجابة السابقة.

Sub ExtractNumbers()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim cell As Range
    Dim number As String
    Dim targetRange As Range
    
    Set ws = ThisWorkbook.Sheets("Sheet1")
    lastRow = ws.Cells(ws.Rows.Count, "M").End(xlUp).Row
    Set targetRange = ws.Range("R2:R" & lastRow)
    
    For Each cell In ws.Range("M2:M" & lastRow)
        number = cell.Value
        If IsNumeric(number) Then
            targetRange.Cells(cell.Row - 1, 1).Value = number
        End If
    Next cell
End Sub

 

ويمكنك استخدام معادلة بدلاً من كود VBA. 

1. افتح ورقة العمل التي تحتوي على البيانات التي تريد استخراج الأرقام القومية منها.

2. اكتب العمود R الذي تريد نقل الأرقام القومية إليه.

3. في الخلية R2، اكتب الصيغة التالية:
   

  =IF(ISNUMBER(M2), M2, "")

4. اضغط على Enter لتطبيق الصيغة. يتم الآن اختبار قيمة الخلية في العمود M. إذا كانت القيمة رقمية، سيتم نقلها إلى العمود R. إذا لم تكن القيمة رقمية، ستكون الخلية فارغة.

5. سحب الزاوية السفلى اليمنى من الخلية R2 إلى الأسفل حتى الصف الأخير الذي يحتوي على بيانات في العمود M.

بهذه الطريقة، يتم استخدام معادلة Excel بسيطة لاستخراج الأرقام القومية من العمود M ونقلها إلى العمود R دون الحاجة إلى استخدام كود VBA.

تم تعديل بواسطه Saleh Ahmed Rabie
اضافة
قام بنشر (معدل)

لعلي لم اوفق في طرخ السؤال 

انا اريد استخراج ما اضعة من بداية الخلية  R5   من الشيت الاساسي  A1:O5000 على ان ينسخ لي  البيانات التي تخص الرقم القومي الذي وضعتة   من بداية الخلية  V5 الى الخلية AJ5

فهرس مايو عام11 2024.xlsx

تم تعديل بواسطه رجب مرسي
  • أفضل إجابة
قام بنشر

السلام عليكم ورحمه الله وبركاته وبها نبدأ

تفضل اخي

Option Explicit

Sub Search_Transfer()
    Dim WS As Worksheet, cel As Range, lr As Long, Temp(), I As Long, J As Long, X
    Set WS = ThisWorkbook.Worksheets("Sheet2")
    lr = WS.Cells(Rows.Count, "R").End(xlUp).Row
    For Each cel In WS.Range("R5:R" & lr)
        If cel <> "" Then
            X = Application.Match(cel, WS.Columns(13), 0)
            If Not IsError(X) Then
                I = I + 1
                ReDim Preserve Temp(1 To 15, 1 To I)
                Temp(1, I) = I
                For J = 2 To 15
                    Temp(J, I) = WS.Cells(X, J).Value
                Next J
            End If
        End If
    Next cel
    Temp = Application.Transpose(Temp)
    If I > 0 Then WS.Range("V5").Resize(I, UBound(Temp, 2)).Value2 = Temp
End Sub

 

  • Like 4
  • 4 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information