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

كود نسخ ولص في خلايا مدمجة


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

السلام عليكم اخوتي الاعزاء مشرفين واعضاء ورحمة الله وبركاته....

الموضوع ببساطة اني اريد كود لنسخ العمود ذو الحلايا المفردة الى العمود A ذو الخلايا المدمجة مع ملاحظة ان هذه الخلايا ليست مستمرة بل كل عشرة منها منقطعة عن الاخرى كما في الملف المرفق..past mereged.rarpast mereged.rar

past mereged.rar

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

أخي الكريم العنكوش ..

لما الفاصل بين الخلايا المدمجة ... ولما استخدام الخلايا المدمجة في الأصل ..

إذا كنت تريد توسيع الصفوف فهذا أمر بسيط ويسير وأفضل من الدمج ..

عموماً يبقى الطلب طلب :: أولاً هل عدد الخلايا المدمجة ثابت على الدوام أي كل ثلاثة خلايا ...

ثانياً: الفاصل بين الخلايا المفردة والخلايا المدمجة في العمود الأول ثابت أي 10 صفوف بينهما أم لا؟

تقبل تحياتي

 

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

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

 

Book1.rar

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

أخي الكريم

إليك الكود التالي عله يفي بالغرض

Sub LoopMergedCells()
    Dim I As Long, lRow As Integer
    lRow = 1
    
    For I = 7 To 236 Step 3
        If I <> 7 And Right(I Mod 30, 1) = "7" Then I = I + 10
        Cells(I, 1).Value = Cells(lRow, "M").Value
        lRow = lRow + 1
    Next I
End Sub

وإليك ملف مرفق مطبق فيه الكود

تقبل تحياتي

 

Loop Through Merged Cells & Transfer Data From Unmerged Cells YasserKhalil.rar

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

منذ ساعه, ياسر خليل أبو البراء said:

If I <> 7 And Right(I Mod 30, 1) = "7" Then I = I + 10

أخى و أستاذى الغالى ياسر     :   ليه الرقم 30 تحديدا  ؟     جربت 10 و 20  و 30 و 40  والكود شغال

ولا فيه حاجة مش واخد بالى منها

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

أخي الكريم مختار

الأرقام في الكود التالي عبارة عن أول خلية مفردة بعد الخلايا المدمجة (والتي عددها 30 خلية : هي 10 خلايا مدمجة * كل خلية مدمجة = 3 خلايا مفردة)

لاحظت أن نتائج الكود عبارة عن 7  و 17 و 27 ... فقمت بعمل السطر في الكود السابق بناءً على ذلك بأن قيمة المتغير I تزيد 10 إذا كان أول رقم في الناتج من ناحية اليمين يساوي 7 ..

Sub Test()
    MsgBox 37 Mod 30
    MsgBox 77 Mod 30
    MsgBox 117 Mod 30
    MsgBox 157 Mod 30
    MsgBox 197 Mod 30
End Sub

لو عندك فكرة تانية أرحب بها لأن الفكرة جات كدا معايا مش مدروسة مجرد خيالات بعض الإبداع

تقبل تحياتي

 

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

لكن اخي سؤالين تفضلا منك لا أمرا عليك اذا امكن ..اولهما ماذا ان كانت القيم المفردة في شيت اخر ؟ وماذا ان اردت مسح محتويات الخلايا المدمجة ( اي التراجع عن امر نسخ واللصق)؟

وان امكن شرح للاسطر التي كتبتها ليتسنى التعديل عليها بما يتلائم مع ما اريد....وشكرا لك اخي ابو البراء ...

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

أخي الكريم

يفضل إرفاق ملف معبر عن الملف الأصلي للعمل عليه ... وإن شاء الله إذا تيسر لي الأمر والوقت سأقوم بشرح الكود رغم أنه لن ينفع الشرح إلا إذا كان المتعلم مريد للتعلم وإذا كان هناك إلمام كافي بالأساسيات ..

بالنسبة إذا كانت القيم المفردة في شيت آخر سيتم فقط الإشارة إلى اسم ورقة العمل في الكود قبل هذا الجزء

Cells(lRow, "M").Value

فلو كانت الورقة اسمها Sheet2 سيكون السطر بهذا الشكل

Sheets("Sheet2").Cells(lRow, "M").Value

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

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

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