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

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

قام بنشر (معدل)

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

اريد المساعدة فى امر  هام 

عندى ملف اكسيل لى  بيانات الموظفين 

لدى ثلات جهات  للعمل ( الشقق-الشركة-المكتب)

وتمت اظافة بينات الموظفين فى الصفحة الاولى وبها جهة العمل لدى كل موظف

وتم عمل ثلات صفحات اخرى كل صفحة باسم جهة عمل

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

اى الموظفين الذين يعملون فى الشركة اريدهم فى صفحة الشركة فقط 

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

والشى المهم جدا الذى اريدة  هو اظافة الاسماء اوتماتيكينا

يعنى عند اظافة اى من الموظفين فى الصفحة الاول يتم اظافة فى جهة العمل الخاصة بية اوتوماتيكينا

اى عند اطافة موظف فى قسم الشركة اجدة  فى صفحة الشركة اوتماتيكيا 

ملاحظة

اريد طريقة عير طريقة الفلاترة

بيانات الموظفين - Copy.rar

تم تعديل بواسطه moooss1
قام بنشر
Sub Test_Yasser()
    Dim x, str As String
    For x = 6 To Cells(Rows.Count, 3) _
    .End(xlUp).Row
        str = Cells(x, 6)
        Range("C" & x & ":F" & x) _
.Copy Sheets(str).Range("C" & _
Sheets(str).Cells(Rows.Count, 3) _
.End(xlUp).Row + 1)
    Next
    MsgBox "Done........", 64
End Sub

من فضلكم اؤيد شؤح اسطر هذا الكود الرائع

قام بنشر
منذ ساعه, إبراهيم ابوليله said:

اخى ياسر

كل التحيه

كود جميل وبسيط

تقبل تحياتى

 

السلام عليكم المشكله كلما يتم الترحيل يتم تكرار نفس الاسماء مرة اخرى 

 

السلام عليكم المشكله كلما يتم الترحيل يتم تكرار نفس الاسماء مرة اخرى

 

قام بنشر

مشكورين اخواني الكرام

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

اما في الحالة التى طلبتوها دا مثال لعدم تكرار البيانات

لعله المطلوب

تحياتي لكم

 

بيانات الموظفين - Copy.rar

  • Like 1
قام بنشر

شرح مبسط للكود

Sub Test_Yasser()
'متغير  واي ونستخدمه في الحلقة التكرارية الاولى ليرمز لرقم الشيت
'متغير اكس وهو خاص بالحلقة التكرارية الثانية ويقوم بعد عدد الاسطر الموجود باه بيانات لمقارنة كل بيان بصفحته
'المتغير اس تي ار   متغير من نوع نصى ليشير الى اسم الشيت وهو يساوي  العمود الخاص بأسماء الصفحات
    Dim Y, X, str As String
    'هنا المتغير واي يبدأ من 2 الى 4 وهي عدد الصفحات من بعد الاولي حتى الاخيرة
    For Y = 2 To 4
        'هنا يتم المرور على كل الشيتات المحددة في الحلقة بخلاف الشيت الاول ومسح محتوياتهم تمهيدا لجلب المحتوى الجديد
        Sheets(Y).Range("C6:F" & Sheets(Y).Cells(Rows.Count, 3).End(xlUp).Row).ClearContents
    Next
    'هناحلقة تكرارية تبدأ بأول صف بيانات وهو 6 حتى نهاية البيانات بالصفحة الرئيسية
    For X = 6 To Cells(Rows.Count, 3).End(xlUp).Row
        'المتغيرالخاص بخليه اسم الشيت حتى يتم نسخ البيانات اليه
        str = Cells(X, 6)
        'هنا يتم نسخ كل صف داخل الحلقة التكرارية ووضعه في الشيت المذكور اسمه بجانب البيانات
        'بفرض في هذا المثال ان المتغير اكس بيساوي 6 في اول حلقة له يبقي السطر البرمجي يصبح هكذا
        ' Range("C6:F6").Copy Sheets("الشركة").Range("C" & Sheets("الشركة").Cells(Rows.Count, 3).End(xlUp).Row + 1)
        Range("C" & X & ":F" & X).Copy Sheets(str).Range("C" & Sheets(str).Cells(Rows.Count, 3).End(xlUp).Row + 1)
    Next
    MsgBox "Done........", 64
End Sub

 

 

  • Like 2
قام بنشر

حبيبى يا ابو العربى

ايه الجمال والحلاوه دى

بس انا كنت متوقع ان الحزف هيكون بناء على اسم الشيت

ياسلام لو قدرنا نظف الكود علشان يتم حزف البيانات

بناء على اسم الشيت الى ف العمود

تقبل تحياتى

 

قام بنشر (معدل)
21 ساعات مضت, ياسر العربى said:

شرح مبسط للكود


Sub Test_Yasser()
'متغير  واي ونستخدمه في الحلقة التكرارية الاولى ليرمز لرقم الشيت
'متغير اكس وهو خاص بالحلقة التكرارية الثانية ويقوم بعد عدد الاسطر الموجود باه بيانات لمقارنة كل بيان بصفحته
'المتغير اس تي ار   متغير من نوع نصى ليشير الى اسم الشيت وهو يساوي  العمود الخاص بأسماء الصفحات
    Dim Y, X, str As String
    'هنا المتغير واي يبدأ من 2 الى 4 وهي عدد الصفحات من بعد الاولي حتى الاخيرة
    For Y = 2 To 4
        'هنا يتم المرور على كل الشيتات المحددة في الحلقة بخلاف الشيت الاول ومسح محتوياتهم تمهيدا لجلب المحتوى الجديد
        Sheets(Y).Range("C6:F" & Sheets(Y).Cells(Rows.Count, 3).End(xlUp).Row).ClearContents
    Next
    'هناحلقة تكرارية تبدأ بأول صف بيانات وهو 6 حتى نهاية البيانات بالصفحة الرئيسية
    For X = 6 To Cells(Rows.Count, 3).End(xlUp).Row
        'المتغيرالخاص بخليه اسم الشيت حتى يتم نسخ البيانات اليه
        str = Cells(X, 6)
        'هنا يتم نسخ كل صف داخل الحلقة التكرارية ووضعه في الشيت المذكور اسمه بجانب البيانات
        'بفرض في هذا المثال ان المتغير اكس بيساوي 6 في اول حلقة له يبقي السطر البرمجي يصبح هكذا
        ' Range("C6:F6").Copy Sheets("الشركة").Range("C" & Sheets("الشركة").Cells(Rows.Count, 3).End(xlUp).Row + 1)
        Range("C" & X & ":F" & X).Copy Sheets(str).Range("C" & Sheets(str).Cells(Rows.Count, 3).End(xlUp).Row + 1)
    Next
    MsgBox "Done........", 64
End Sub

 

 

الف شكر لك اخى شرح رائع 

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

فما هيا التغيرات الى اغيره فى هذا الكود فى حالة العمل على ملف اخر  يحتوى على اعمدة اكثر او صفحات زياردة 

تم تعديل بواسطه moooss1

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