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

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

قام بنشر

السلام عليكم ورحمة الله وبركاته

يوجد أرقام جوالات مبعثرة في ملف اكسل كبير

هل يوجد أمر مثلاً أقول للإكسل استخرج جميع الأرقام المكونة من 10 خانات وتبدأ بـ 05 أي رقم بهذه المواصفات يستخرجه في عمود واحد ..

وشكراً

قام بنشر

السؤال واضح أخي الكريم

 

ملف يحتوي على بيانات من ضمنها أرقام جوالات ..

أريد الاكسل يستخرج جميع الارقام التي تحتوي على 10 خانات وبدايتها 05

التي هي ارقام الجوالات

 

وشكراً لك جزيلاً .

قام بنشر

السلام عليكم 

بالإذن منكم باعتبار لا يوجد ملف مرفق

إذا كانت الداتا في Sheet1 ,وتبدأ من A1

والنتيجة في sheet2  العمود A1 down

Sub test()
    Dim cel As Range
    Dim i&
    With CreateObject("VBScript.RegExp")
        .Global = True
        For Each cel In Sheets("sheet1").UsedRange.Cells
            .Pattern = "[05 ]*[\d]{8}"
            If .test(cel) Then
                Sheets("sheet2").Cells(i + 1, 1) = .Execute(cel)(0)
                i = i + 1
            End If
        Next
    End With
End Sub

 

  • Like 2
قام بنشر

Great my bro

That is my try

Sub Test()
    Call Generate_Random_Numbers
    Call Extract_Valid_Numbers_Only
End Sub

Private Sub Generate_Random_Numbers()
    Dim i As Long
    With ActiveSheet
        With .Columns("A:B")
            .ClearContents: .NumberFormat = "@": .ColumnWidth = 20
        End With
        .Range("A1").Resize(, 2).Value = Array("Numbers", "Result")
        ReDim a(1 To 100, 1 To 1)
        For i = LBound(a) To UBound(a, 1)
            a(i, 1) = GenerateNumber()
        Next i
        .Range("A2").Resize(UBound(a, 1), UBound(a, 2)).Value = a
    End With
End Sub

Function GenerateNumber() As String
    Dim a, sRanNum As String, sPrefix As String, iLen As Long
    a = Array("02", "05")
    iLen = WorksheetFunction.RandBetween(8, 11)
    sPrefix = a(WorksheetFunction.RandBetween(0, UBound(a)))
    sRanNum = sPrefix & Format(Application.WorksheetFunction.RandBetween(10 ^ (iLen - 3), (10 ^ (iLen - 2)) - 1), String(iLen - 2, "0"))
    GenerateNumber = sRanNum
End Function

Private Sub Extract_Valid_Numbers_Only()
    Dim a, ws As Worksheet, n As Long, i As Long
    Set ws = ActiveSheet
    a = ws.UsedRange.Columns(1).Value
    ReDim b(1 To UBound(a, 1), 1 To 1)
    n = 1
    With CreateObject("VBScript.RegExp")
        .Global = True
        For i = 1 To UBound(a, 1)
            .Pattern = "^05\d{8}$"
            If .Test(a(i, 1)) Then
                b(n, 1) = .Execute(a(i, 1))(0).Value
                n = n + 1
            End If
        Next i
    End With
    ws.Range("B2").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

 

There are two codes: the first code will generate random numbers and the second code will extract the valid numbers only

  • Like 1

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