يجب ان تكون الاسماء متطابفة من حيث كتابتها دون اي مسافة ناقصة او زائدة)
لاجظت عتدك ان الاسم في B5 ينقص عن الاسماء باللائحة بمسافة و بعضها يزيد (لذلك اقترح ان تدرج الاسماء في لائحة منسدلة مأخوذة من البيانات الاساسية)
المعادلة غير صحيحة
بجب ان يكون هناك نفس عدد الصفوف (536 قي العامود B , و نفس الرقم (536) في العامود N )
او (539 قي العامود B , و نفس الرقم (539) في العامود N)
نفس الشيء بالنسبة للبداية ( تكون 6 أو 7)
بعني المعادلة هكذا
=SUMPRODUCT(($B$7:$B$536=$B$543)*$N$7:$N$536)
أو
=SUMPRODUCT(($B$7:$B$539=$B$543)*$N$7:$N$539)
شكراً اخي ناصر على المرور والاطراء الذي لا استحقه
الرقم 12 هو اختصار للعبارة "xlCellTypeVisible"
ما رأيك لوكان في العامود اكثر (أو أقل) من اريع متغيرات (Criteria)
(حاول ان تضع كود لعدد متغير من Criteria) بالتالي متغير من الصفحات
الافضل ان يختتم الكود بهذه العبارة
Erase arr
Set S_sh = Nothing: Set My_Sheet = Nothing: Set My_Rg = Nothing: i = 0
كي لا تبقى شيء في الذاكرة يثقلها
جرب هذا الملف
تم اضافة صف فارغ قبل البيانات في الورقة "شيت" لتفادي مشكلة دمج الخلايا التي تعيق عمل اي كود
الكود
Option Explicit
Sub transfer_data()
Dim My_Rg As Range
Dim S_sh As Worksheet, My_Sheet As Worksheet
Dim i As Byte
Dim arr(1 To 4)
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
For i = 2 To 5
arr(i - 1) = Sheets(i).Name
Next
Set S_sh = Sheets("شيت")
Set My_Rg = S_sh.Range("b21").CurrentRegion
If S_sh.AutoFilterMode = False Then
My_Rg.AutoFilter
End If
For i = 1 To 4
Set My_Sheet = Sheets(arr(i))
My_Sheet.Range("b4:f500").Clear
My_Rg.AutoFilter field:=4, Criteria1:=arr(i)
My_Rg.SpecialCells(12).Copy My_Sheet.Range("b4")
My_Rg.AutoFilter
Next
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
الملف مرفق
نتيجة المدرسة Salim.rar
استاذ محمد
لك ما تريد لكن بالمعادلات في الصفحة وليس اليوزر فورم
بالنسبة لليوزر فورم يكفي ان تعكس الحلقة التكرايرة لتصبح هكذا
For I = Len(Label1) To 1 Step -1
reverse text.rar