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

سؤال حول كيفية استخدام Sum If بشكل مختلف


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

أخى الفاضل

جرب هذا الكود بدلا من الدالة


Sub ragab()

Dim sh As Worksheet

Dim cl As Range, cll As Range

Range("C2:C" & [c10000].End(xlUp).Row).ClearContents

For Each sh In ThisWorkbook.Worksheets

If Not sh.Name = "Sheet6" Then

    For Each cl In Range("B2:B" & [B10000].End(xlUp).Row)

        For Each cll In sh.Range("D2:D" & sh.[D10000].End(xlUp).Row)

            If cll.Offset(0, -2) = cl Then

                cl.Offset(0, 1) = cl.Offset(0, 1) + cll

            End If

        Next

    Next

End If

Next

End Sub

فواتير1.rar

رابط هذا التعليق
شارك

الاخ / عماد محي الدين المحترم

وبعد اذن الاستاذ الكبير رجب جاويش وحله العبقري ، تم حل المطلوب بداله SUMIF تجدها في المرفق لتعم الفائده بالاكواد وايضا بالدوال .

وللتوضيح في كيفيه استخدام داله SUMIF اكتب الدالة، ثم حدد العمود الذي تبحث فيه، ثم فاصلة ، ثم حدد النص المراد البحث عنه وضعه بين علامتي تنصيص “ “ ، ثم حدد العمود الذي توجد به القيم المراد تجمعيها.

وشكراً ،،،،،

فواتير الحل بالمعادلات.rar

تم تعديل بواسطه محمود رواس
رابط هذا التعليق
شارك

الاستاذ محمود رواس

الاستاذ /

رجب

جزاكم الله خيرا كثيرا على افادتكم

الكود الذى صممه الاستاذ رجب جميل جدا جدا

وابهرنى جدا جدا سهولة الحل من الاستاذ محمود رواس

رابط هذا التعليق
شارك

الاخ / عماد المحترم

اولا العفو وهذا واجب علينا تجاه هذا الصرح الكبير ، ثانيا لا يقدم الطالب على المعلم ابدا ونحن هنا نتعلم من الاساتذه الكبار وعمالقه هذا المنتدى ومن ضمنهم الاستاذ الكبير الفاضل رجب جاوش .

وشكراً ،،،،،

تم تعديل بواسطه محمود رواس
رابط هذا التعليق
شارك

أخى الفاضل المحترم / محمود رواس

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

ولكن هو كرمك وسمو أخلاق منك أن تدعونى بالأستاذ الكبير

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

أخى الفاضل / عماد

جزاك الله كل خير أخى الفاضل على هذه الكلمات الطيبة

رابط هذا التعليق
شارك

اخى الحبيب رجب

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

اتمنى ان تكون بخير وفى افضل حال ان شاء الله

ولكن لى سؤال فى الشيت المرفق

وهو هل يمكن منع تكرار ادخال ارقام الفواتير المتشابهه فى العمود بى

كما هو موضح

ارجو توضيح الخطأ.rar

رابط هذا التعليق
شارك

أخى الحبيب ابراهيم

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

شكرا لك أخى الحبيب على سؤالك عنى وعن أحوالى

بارك الله فيك وجزاك الله عنى خير الجزاء

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

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

أما بالنسبة للملف المرفق

فحسب فهمى للمطلوب عملت هذا الكود

فأرجو منك تجربته وان لم يكن كما تريد أبلغنى وان شاء الله أقوم بتعديلة كما تريد

وهو كود فى حدث الورقة الثانية


Private Sub Worksheet_Change(ByVal Target As Range)

Dim LR As Integer, cl As Range

LR = [A1000].End(xlUp).Row

'==========================================================

If Target.Column <> 1 Then Exit Sub

For Each cl In Range("A6:A" & LR)

If Application.WorksheetFunction.CountIf(Range(Cells(cl.Row, 1), Cells(LR, 1)), cl) > 1 Then

MsgBox "هذا الرقم مكرر": Target = "": Target.Select: Exit Sub

End If

Next

End Sub

منع تكرار رقم.rar

رابط هذا التعليق
شارك

اخى الحبييب رجب

مشكورا على الرد

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

واذا تم عمل نعم اريد التكرار يتم التكرار

واذا تم الضغط على لا يتم التراجع عن الامر

رابط هذا التعليق
شارك

السلام عليكم

بعد اذن الاساتذة رجب جاويش و محمود رواس

حل بطريقة اخرى

كود حدث الورقة


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column <> 1 Or Target = "" Then Exit Sub

Dim D_A

Dim Tr_A$

Dim Cel As Range

  Set D_A = CreateObject("Scripting.dictionary")

	  For Each Cel In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row - 1)

	    If Not D_A.Exists(CStr(Cel.Value)) Then D_A.Add CStr(Cel.Value), CStr(Cel.Address)

	  Next Cel

    Tr_A = Target.Value

If D_A.Exists(Tr_A) Then

If MsgBox(" هل تريد تكرار القيمة " & D_A.Item(Tr_A) & " : هذه القيمة موجوده مسبقا في الخلية ", _

vbYesNo, "تنبية !!!") = vbNo Then Target = "": Target.Select: Exit Sub

End If

End Sub

رابط هذا التعليق
شارك

  • 4 years later...

السلام عليكم أنا عضو جديد معكم بالمنتدى حبيت أسئل هل المعادلة التي تمنع التكرار يمكن تغيير العمود A إلى عمود أخر لكي يسمح لنا بتغييره على حسب المكان المراد عدم التكرار فيه ومتأسف غلى الإطالة

رابط هذا التعليق
شارك

وعليكم السلام أخي الكريم

أولاً أهلاً بك في المنتدى ونورت بين إخوانك

ثانياً ما قدم من قبل أخونا العيدروس هو كود وليس معادلة .. المعادلة توضع في ورقة العمل وتبدأ بعلامة يساوي أما الكود فيوضع في محرر الأكواد في موديول أو في حدث المصنف أو أوراق العمل أو الفورم

ثالثاً إذا أردت تغيير العمود فيمكن ذلك من خلال تغيير الكود في سطرين

السطر الأول هو رقم العمود الهدف 

Target.Column <> 1

الرقم 1 في هذا الجزء يشير للعمود الأول .. فإذا أردت التعامل مع العمود E وهو العمود رقم 5 ستقوم بتغيير الرقم 1 إلى الرقم 5

 

السطر الثاني هو نطاق العمود الأول

Fo Each Cel In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row - 1)

قم بتغيير حرف الـ A المعبر عن العمود الأول وضع مكانه حرف العمود المطلوب العمل عليه

أرجو أن أكون قد أفدتك

  • Like 1
رابط هذا التعليق
شارك

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

  • Like 1
رابط هذا التعليق
شارك

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

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



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

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

Important Information