ahmed_atoon قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 السلام عليكم ورحمه الله وبركاته اريد جمع عمود به ارقام ونص المشكلة ان الخلية ممكن ان تحتوى على اكثر من رقم تحت بعض وليس فى صفوف مختلفة ولا يمكن تقسيمها الي عده صفوف لكثره الشيتات ويجب اعاده دمج خلايا اخرى فى حالة اضافة صف ايضا هناك نوعين من النص اريد الجمع بينهم مثال 250 GB + 1 TB = 1.25 TB تـــم تعديل عنوان المشاركة ليتناسب مع طلبك مرفق مثال Sum.xlsx
أفضل إجابة سليم حاصبيا قام بنشر نوفمبر 19, 2020 أفضل إجابة قام بنشر نوفمبر 19, 2020 جرب هذا الملف فقط اضغط الزر 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 5 1
ahmed_atoon قام بنشر نوفمبر 19, 2020 الكاتب قام بنشر نوفمبر 19, 2020 شكراً لك اخي العالي بس مافيش طريقه غير الماكرو والكوماند علشان المايكرو للأسف عاملين عليه ايقاف داخل الشبكة يعنى لو فيه معادله علي طول او كود VBA بس يتنفذ من غير ماكرو اخي العزيز لا أعتقد ان التأخر فى عدم الضغط على الاعجاب او الرد يكون بهذا الشكل ممكن اكون رفعت المشكلة وقمت من الجهاز وممكن ان يكون ميعاد العمل انتهي وفى طريق للبيت زي دلوقتى بكتب من البيت... نفس المشكلة اللى الجميع يتضايق منها ان حد يرفع مشكلة ويفضل يعلق مافيش حد يرد مافيش حد معبرنا برضه الناس الافاضل امثالك ومثل الاخ سليم ليسوا جالسين 24 ساعة امام الجهاز للرد على المشاكل. والفضل فى الأول والآخر لله سبحانه وتعالي تحياتي
yara ahmed قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 سؤال فى نفس الموضوع بعد اذنكم إذا كان لدى عمود به رقم وكلمة عند استخدام دالة sum لجمع الارقام بالعمود تخرج الدالة خطأ ما هى الدالة التى تتجاهل الكلمات وتجمع الارقام فقط مع الاعتذار لكم جميعا للتدخل بس بحكم أنه نفس الموضوع مشكورين
Ali Mohamed Ali قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 تفضلى - كما بالملف طريقتين مختلفتين اختارى منها المناسب لك وهذه أيضاً دالة معرفة لنفس الطلب 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 1
سليم حاصبيا قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 للاسف ليس هناك دالة لهذا الامر(حسب علمي) لأن الدالة sum تتجاهل الخلية (بالكامل) التي تحتوي على نص و ليس محتوباتها و ريثما تقوم مايكروسوف باختراع هكذا دالة ما علينا الا العمل بواسطة الــ VBA 1
ahmed_atoon قام بنشر نوفمبر 19, 2020 الكاتب قام بنشر نوفمبر 19, 2020 تفضلي الملف به 3 شيتات بــ 3 طرق اول شيت عن طريق موديول VBA والتاني مصفوفه والثالث معادله SUM.xlsx 1
yara ahmed قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 الف شكر استاذ على بارك الله فيك استاذى اخى الغالى سليم بارك الله فيك استاذ احمد الف شكر لحضرتك اخى
سليم حاصبيا قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 بالنسبة للموضوع الأول هناك اشياء موصوعة الــ "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 1
ahmed_atoon قام بنشر نوفمبر 19, 2020 الكاتب قام بنشر نوفمبر 19, 2020 تمام اخي سليم هيا بالجيجا والتيرا فعلاً وقمت بتغيير الرقم الي 1000 فقط الا يوجد شئ الا استخدم الكوماند يعني الموديول زي ماهو ويكون فيه معادله او شئ فى الخليه المراد الجمع بها ترجع الى الموديول
Ali Mohamed Ali قام بنشر نوفمبر 19, 2020 قام بنشر نوفمبر 19, 2020 بارك الله فيك استاذ سليم وبعد اذن حضرتك ولإثراء الموضوع هذا حل اخر بمعادلات المصفوفة (Ctrl+Shift+Enter) تفضل ahmed_atoon بالمعادلة =SUM(IFERROR(--MID(SUBSTITUTE(SUBSTITUTE(B2,CHAR(10)," ")," ",REPT(" ",99)),ROW($1:$30)*99-98,99),0)) Sum1.xlsx 1
الردود الموصى بها