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

جمع خلية بها ارقام ونص متعددة السطور


ahmed_atoon
إذهب إلى أفضل إجابة Solved by سليم حاصبيا,

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

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

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

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

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

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