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

ترحيل وتصفية بيانات من ورقة 1 الى ورقة 2


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

الاستاذ المحترم زيزو العجوز

يحفظك الله ويرعاك

ارجو وضع شرح لاكوادك دائما لانها مراجع يستفيد منها الكثيرون ونتعلم منها

====

اين الجزئيه التي تجعلنا نغير في بدايه وضع النتائج في صفحة الهدف

وكذلك في صفحه المصدر

بارك الله فيك

=======

Sub TransData()
Dim Main As Worksheet, sh As Worksheet
Dim Arr As Variant, Temp As Variant
Dim i As Long, j As Long, p As Long
Dim dep As String
Set Main = Sheets("المصدر")
Set sh = Sheets("الهدف")
'=======
sh.Range("A2:J" & Main.Range("B" & Rows.Count).End(xlUp).Row).ClearContents
dep = sh.Range("L1").Value
Arr = Main.Range("A2:J" & Main.Range("B" & Rows.Count).End(xlUp).Row).Value
ReDim Temp(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
For i = 1 To UBound(Arr, 1)
If Arr(i, 4) = dep Then
p = p + 1
For j = 1 To UBound(Arr, 2)
Temp(p, j) = Arr(i, j)
Next
End If
Next
If p > 0 Then sh.Range("A2").Resize(p, UBound(Temp, 2)).Value = Temp
End Sub

 

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

السلام عليكم ورحمة الله
اخى الكريم / ناصر اليك شرح الكود كما ظلبت

Sub TransData()
Dim Main As Worksheet, sh As Worksheet الاعلان عن اسماء الشيتات
Dim Arr As Variant, Temp As Variant '  الاعلان عن المصفوفتين
Dim i As Long, j As Long, p As Long  '(i,j)الاعلان عن ابعاد المصفوفة الاولى ( p  ) وعداد المصفوفة الثانية
Dim dep As String '   (جنوب,شمال,غرب,شرق) الاعلان عن المتغير الذى سوف يتم العمل عليه  
Set Main = Sheets("المصدر")
Set sh = Sheets("الهدف")
'=======
'  محو البانات القديمة
sh.Range("A2:J" & Main.Range("B" & Rows.Count).End(xlUp).Row).ClearContents
'    معيار الاختيار  
dep = sh.Range("L1").Value
 '     المصفوفة المصدر
Arr = Main.Range("A2:J" & Main.Range("B" & Rows.Count).End(xlUp).Row).Value
'     ابعاد المصفوفة الهدف 
ReDim Temp(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
 '     طول المصفوفة المصدر
For i = 1 To UBound(Arr, 1)
 '    شرط تعبئة المصفوفة الهدف
If Arr(i, 4) = dep Then
 '    العداد لتحديد طول المصفوفة الهدف
p = p + 1
 '     عرض المصفوفة الهدف
For j = 1 To UBound(Arr, 2)
'  تعبئة المصفوفة الهدف من المصفوفة المصدر حسب الشرط
Temp(p, j) = Arr(i, j)
Next
End If
Next
 '  واخيرا عرض البيانات المطلوبة
If p > 0 Then sh.Range("A2").Resize(p, UBound(Temp, 2)).Value = Temp
End Sub

 

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

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

المصنف1.rar

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

الاستاذ المحترم زيزو العجوز

يحفظك الله

عند تطويع كودك الرائع على هذا الملف لم يعمل .. لماذا .. وارجو تطويعه

 

استدعاء صفحة بشرط.rar

الاخ ابو غريب

هذا طلبك

 

استدعاء صفحة كامله .. بشرط.rar

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

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

المصنف1.rar

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

بعد اذن اخي زيزو هذا الكود من سطرين فقط

Option Explicit

Sub Filter_Me()

Sheets("ورقة2").Range("a1").CurrentRegion.ClearContents
Sheets("ورقة1").Range("a1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, criteriarange:=Sheets("ورقة2").Range("m1:n2"), copytorange:=Sheets("ورقة2").Range("a1")
End Sub

الملف مرفق

 

المصنف1 Salim.rar

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

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

عفوا اخى الكريم / ناصر

فالرد السابق سيجمع بين اسماء الناجحين من البنين والبنات

وبمراجعة الخطأ لابد من اعادة نسخ كلمة ناجح من العمود 101 فى الورقة الاولى

ولصقها فى الخلية "G1" بالورقة الثانية و كذلك فى كل المعايير التى لا تعمل معك

            والله ولى التوفيق

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

15 ساعات مضت, ناصر سعيد said:

الاستاذ المحترم زيزو العجوز

يحفظك الله

عند تطويع كودك الرائع على هذا الملف لم يعمل .. لماذا .. وارجو تطويعه

 

استدعاء صفحة بشرط.rar

الاخ ابو غريب

هذا طلبك

 

استدعاء صفحة كامله .. بشرط.rar

جرب هذا الكود (اعتقد انه اسرع و لايحتاج الى حلفات تكرارية)


Sub filter_for_ME()
    With Application
     .ScreenUpdating = False
     .Calculation = xlCalculationManual
    End With
Dim S_sh As Worksheet: Set S_sh = Sheets("المصدر")
Dim T_sh As Worksheet: Set T_sh = Sheets("الهدف")
Dim My_Table As Range: Set My_Table = S_sh.Range("A1").CurrentRegion

T_sh.Range("a1").CurrentRegion.ClearContents
T_sh.Range("s2").Formula = "=المصدر!$H2=الهدف!$L$1"

My_Table.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=T_sh.Range("s1:s2"), _
CopyToRange:=T_sh.Range("A1")
T_sh.Range("s2").ClearContents
    With Application
     .ScreenUpdating = True
     .Calculation = xlCalculationAutomatic
    End With
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$L$1" Or Target.Count > 1 Then GoTo 1
Application.EnableEvents = False
filter_for_ME
1:
Application.EnableEvents = True
End Sub

الملف مرفق بصيغة 2003 كي يستفيد منه العدد الاكبر من الاعضاء

 

استدعاء صفحة كامله .. بشرط salim.rar

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

المحترم سليم حاصبيا

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

لم استطع فهم كودك لوجود اسماء خلايا

اجدها فارغه مثل خليه S1   و S2

موجود ايضا a1 ابتداء المسح بالرغم من انها راس عنوان

 ارجو شرح الكود واضافته في ملفي هذا  .. يحفظك الله

 

استدعاء صفحة بشرط.rar

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

3 ساعات مضت, ناصر سعيد said:

المحترم سليم حاصبيا

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

لم استطع فهم كودك لوجود اسماء خلايا

اجدها فارغه مثل خليه S1   و S2

موجود ايضا a1 ابتداء المسح بالرغم من انها راس عنوان

 ارجو شرح الكود واضافته في ملفي هذا  .. يحفظك الله

 

استدعاء صفحة بشرط.rar

كي يعمل الكود بشكل ممتاز يجب ازالة اشد اعداء الـــ VBA اعني الخلايا المدمجة

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

7 ساعات مضت, ناصر سعيد said:

المحترم سليم حاصبيا

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

لم استطع فهم كودك لوجود اسماء خلايا

اجدها فارغه مثل خليه S1   و S2

موجود ايضا a1 ابتداء المسح بالرغم من انها راس عنوان

 ارجو شرح الكود  من فضلك وخاصه هذه الخلايا الموجوده بالكود وفارغه في صفحه الاكسيل

 

 

 

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

الكود يقوم بالتصفية عن طريق Advanced filter

يجب ان تكون الصفحة T_sh محددة (اي الصفحة "الهدف")

1-ادخل على صفحة الكود  و قم بتعطيل الكود (حدث الصفحة) عن طريق وضع فاصلة عليا  عند كل سطر من اسطره

ليصيح الكود بهذا الشكل

Option Explicit

Sub filter_for_ME()
    With Application
     .ScreenUpdating = False
     .Calculation = xlCalculationManual
    End With
Dim S_sh As Worksheet: Set S_sh = Sheets("المصدر")
Dim T_sh As Worksheet: Set T_sh = Sheets("الهدف")
Dim My_Table As Range: Set My_Table = S_sh.Range("A1").CurrentRegion

T_sh.Range("a1").CurrentRegion.ClearContents
T_sh.Range("s2").Formula = "=المصدر!$H2=الهدف!$L$1"

My_Table.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=T_sh.Range("s1:s2"), _
CopyToRange:=T_sh.Range("A1")
T_sh.Range("s2").ClearContents
    With Application
     .ScreenUpdating = True
     .Calculation = xlCalculationAutomatic
    End With
End Sub


'Private Sub Worksheet_Change(ByVal Target As Range)
'If Target.Address <> "$L$1" Or Target.Count > 1 Then GoTo 1
'Application.EnableEvents = False
'filter_for_ME
'1:
'Application.EnableEvents = True
'End Sub

2-ضع المؤشر داخل الكود filter_for_ME

3-بواسطة المفتاح F8 نفذ الكود خطوة خطوة و لا حظ ماذا يجري على الصفحة و ستفهم الكود يسرعة

4- بعد دراسة الكود ازل الفواصل العليا ليعود كل شيء الى طبيعته

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

الاستاذ سليم

يحفظك الله ... وبعد

الكود يقوم بالتصفية عن طريق Advanced filter

يجب ان تكون الصفحة T_sh محددة (اي الصفحة "الهدف")

1-ادخل على صفحة الكود  و قم بتعطيل الكود (حدث الصفحة) عن طريق وضع فاصلة عليا  عند كل سطر من اسطره

2-ضع المؤشر داخل الكود filter_for_ME

3-بواسطة المفتاح F8 نفذ الكود خطوة خطوة و لا حظ ماذا يجري على الصفحة و ستفهم الكود يسرعة

4- بعد دراسة الكود ازل الفواصل العليا ليعود كل شيء الى طبيعته

Like

( اقتباس )

  بعد عمل ذلك تظهر الاسطر البرمجيه كل سطر ملون باللون الاصفر ومش عارف اعمل ايه تان

او افهم الكود ازاي من اللون الاصفر ...

 

 

 

 

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

30 دقائق مضت, ناصر سعيد said:

الاستاذ سليم

يحفظك الله ... وبعد

الكود يقوم بالتصفية عن طريق Advanced filter

يجب ان تكون الصفحة T_sh محددة (اي الصفحة "الهدف")

1-ادخل على صفحة الكود  و قم بتعطيل الكود (حدث الصفحة) عن طريق وضع فاصلة عليا  عند كل سطر من اسطره

2-ضع المؤشر داخل الكود filter_for_ME

3-بواسطة المفتاح F8 نفذ الكود خطوة خطوة و لا حظ ماذا يجري على الصفحة و ستفهم الكود يسرعة

4- بعد دراسة الكود ازل الفواصل العليا ليعود كل شيء الى طبيعته

Like

( اقتباس )

  بعد عمل ذلك تظهر الاسطر البرمجيه كل سطر ملون باللون الاصفر ومش عارف اعمل ايه تان

او افهم الكود ازاي من اللون الاصفر ...

 

 

 

 

هذا هو المطلوب بالضبط

قم يتصغير شاشة الكود و شاشة الاكسل الى النصف تقريباً(ضعهما جانب بعضهم البعض)

و مع كل كبسة على F8 ينفذ السطر الاصفر من الكود لينتقل التلوين الى السطر التالي وهكذا الى نهابة الكود

لاجظ ما يجري على صفحة الاكسل بعد كل كبسة F8  وخاصة لاحظ المعادلة(المؤقتة) التي سوف تظهر قي الخلية s2 عند السطر

"المصدر!$H2=الهدف!"= T_sh.Range("s2").Formula 

هذه المعادلة يقوم على اساسها الفلتر

بعد تنفيذ الفلتر تمسح هذه المعادلة لانه لا لزوم لها بعد بواسطة هذا السطر

T_sh.Range("s2").ClearContents

يمكنك اعادة المحاولة من البداية قدر ما تريد من المرات مع تغيير قيمة الخلية L1 بواسطة f8

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

منذ ساعه, ناصر سعيد said:

ان شاء الله هانوصل

===

قم يتصغير شاشة الكود و شاشة الاكسل الى النصف تقريباً (ضعهما جانب بعضهم البعض) ..

( اقتباس )

وكيف يتم التصغير  ؟

جزاك الله خيرا

انظر الى هذه الصورة

صورة.rar

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information