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

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

قام بنشر

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

  اريد جمع عمود به ارقام ونص

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

ايضا هناك نوعين من النص اريد الجمع بينهم مثال

250 GB + 1 TB = 1.25 TB

تـــم تعديل عنوان المشاركة ليتناسب مع طلبك

مرفق مثال

Sum.xlsx

  • أفضل إجابة
قام بنشر

جرب هذا الملف فقط اضغط الزر Run

الكود

Option Explicit
Rem code for Extact Number_From_Text
Sub Extract_Number_Please()
    Dim rgx As Object
    Dim My_Number As Object
    Dim ws As Worksheet
    Dim i%, m%, k%, x%, Ro%
    Dim My_sum#, Big_sum#
    
    Set rgx = CreateObject("VBScript.RegExp")
    Set ws = Worksheets("Salim")
    
    Ro = ws.Cells(Rows.Count, 2).End(3).Row
    m = 2: k = 4
    ws.Cells(m, k).CurrentRegion.Clear
    With rgx
       .Global = True: .Pattern = "(\d+\.?\d+)"
        
        For i = 2 To Ro
            If .Test(ws.Cells(i, 2)) Then
                Set My_Number = .Execute(ws.Cells(i, 2))
                For x = 0 To My_Number.Count - 1
                    My_sum = My_sum + Val(My_Number.Item(x))
                Next x
            End If
            Big_sum = Big_sum + My_sum
            ws.Cells(m, k) = My_sum
            My_sum = 0
              m = m + 1
        Next i
    End With
     ws.Cells(m, k) = Big_sum
  
  With ws.Cells(2, k).Resize(m - 1)
   .HorizontalAlignment = 3
   .VerticalAlignment = 2
   .Borders.LineStyle = 1
   .Font.Bold = True
 End With

Set rgx = Nothing: Set ws = Nothing
Set My_Number = Nothing

End Sub

الملف مرفق

ahmed_atoon.xlsm

  • Like 5
  • Thanks 1
قام بنشر

شكراً لك اخي العالي
بس مافيش طريقه غير الماكرو والكوماند علشان المايكرو للأسف عاملين عليه ايقاف داخل الشبكة
يعنى لو فيه معادله علي طول او كود VBA بس يتنفذ من غير ماكرو

اخي العزيز لا أعتقد ان التأخر فى عدم الضغط على الاعجاب او الرد يكون بهذا الشكل ممكن اكون رفعت المشكلة وقمت من الجهاز وممكن ان يكون ميعاد العمل انتهي وفى طريق للبيت زي دلوقتى بكتب من البيت... نفس المشكلة اللى الجميع يتضايق منها ان حد يرفع مشكلة ويفضل يعلق مافيش حد يرد مافيش حد معبرنا برضه الناس الافاضل امثالك ومثل الاخ سليم ليسوا جالسين 24 ساعة امام الجهاز للرد على المشاكل.

والفضل فى الأول والآخر لله سبحانه وتعالي

تحياتي

قام بنشر

سؤال فى نفس الموضوع بعد اذنكم إذا كان لدى عمود به رقم وكلمة عند استخدام دالة sum

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

مشكورين

قام بنشر

تفضلى  - كما بالملف طريقتين مختلفتين اختارى منها المناسب لك

وهذه أيضاً دالة معرفة لنفس الطلب

Function summm(rng)
Dim arr
ReDim arr(1 To rng.Cells.Count)
For Each C In rng.Cells
arr(x + 1) = f(C)
x = x + 1
Next
summm = WorksheetFunction.Sum(arr)
End Function

معادلةجمع مدى يحتوى على أرقام ونصوص

sumarize number with text.xlsx

  • Like 1
قام بنشر

للاسف ليس هناك دالة لهذا الامر(حسب علمي) لأن الدالة sum تتجاهل الخلية (بالكامل) التي تحتوي على نص و ليس محتوباتها
و ريثما تقوم مايكروسوف  باختراع هكذا دالة ما علينا الا العمل بواسطة الــ VBA

  • Like 1
قام بنشر

بالنسبة للموضوع الأول هناك اشياء موصوعة الــ   "GB"  أظن "Gega byte" و أشياء موضوعة بالـــ "TB"  "Terra Byte"

في هذا الكود يتم الجمع على اساس الــ   "GB"       كل  "TB" =  مليون   "GB" حسب نا أغتقد
    اذا كان خطأ استبدل في الماكرو الرقم مليون (Const Multp) الى الرقم الذي تعتقده صحيحاً

الكود لهذا الأمر    يتم التنفيذ في العامود (F)

Option Explicit

Sub test_For_TB()
'+++++++++++++++++++++
    Dim ws As Worksheet
    Dim ro%, Sm#, Big_Sm#, x%, k%
    Dim My_sum#, Big_sum#
    Dim arr
    Const Multp = 1000000
'++++++++++++++++++++++
Set ws = Worksheets("Salim")
ro = ws.Cells(Rows.Count, 2).End(3).Row
 ws.Cells(2, 6).CurrentRegion.Clear

For x = 2 To ro
    arr = Replace(ws.Range("b" & x), Chr(32), " ")
    arr = Replace(arr, Chr(10), " ")
    arr = Split(arr, " ")
    For k = 0 To UBound(arr) - 1 Step 2
        If UCase(arr(k + 1)) = "TB" Then
            Sm = Sm + arr(k) * Multp
        Else
            Sm = Sm + arr(k) * 1
        End If
    Next k
     Big_Sm = Big_Sm + Sm
     ws.Range("F" & x) = Sm
     Sm = 0
Next x
Range("F" & ro + 1) = Big_Sm
With ws.Range("F2").Resize(ro)

   .HorizontalAlignment = 3
   .VerticalAlignment = 2
   .Borders.LineStyle = 1
   .Font.Bold = True
   .NumberFormat = "#,##0"
 End With
End Sub

الملف من جديد مع الكود الجديد والقديم بنفس الوقت

ahmed_atoon_TB.xlsm

  • Like 1
قام بنشر

تمام اخي سليم هيا بالجيجا والتيرا فعلاً وقمت بتغيير الرقم الي 1000 فقط

الا يوجد شئ الا استخدم الكوماند يعني الموديول زي ماهو ويكون فيه معادله او شئ فى الخليه المراد الجمع بها ترجع الى الموديول 

قام بنشر

بارك الله فيك استاذ سليم وبعد اذن حضرتك ولإثراء الموضوع هذا حل اخر بمعادلات المصفوفة (Ctrl+Shift+Enter)

تفضل ahmed_atoon بالمعادلة

=SUM(IFERROR(--MID(SUBSTITUTE(SUBSTITUTE(B2,CHAR(10)," ")," ",REPT(" ",99)),ROW($1:$30)*99-98,99),0))

Sum1.xlsx

  • Like 1
زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information