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

تحويل مجموعة خلايا مرتبة ( ضمن صفوف وأعمدة ) من صفوف إلى أعمدة


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

السلام عليكم

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

هذا الكود


Sub TRANS()

LC = [IV1].End(xlToLeft).Column

For c = 5 To LC Step 4

	r = [A1].End(xlDown).Row + 1

	Range(Cells(1, c), Cells(6, c + 3)).Cut (Cells(r, 1))

Next c

End Sub

وبالمرفق إضغط الزر الأحمر

صفوف-اعمدة_TAREQ.rar

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

سيدي الكريم

في حال أردت التغيير بعدد الأعمدة , ما هو اللازم تعديله بالكود؟

موضوع الصفوف اكتشفته . لكن موضوع الأعمدة وجدته صعباً لضعفي في مجال البرمجة .

وشكرا لتعاونكم

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

السلام عليكم

أخي الكود كالتالي


Sub TRANS()

'هذا يأتي بآخر عمود بالصف1 وفي حالتنا

LC = [IV1].End(xlToLeft).Column  ' Last Column



For c = 5 To LC Step 4 'معناه أن نبدأ عملية النقل من العمود الخامس

    r = (Int((c - 4) / 4) + 1) * 6 + 1 'لنقله الي الصف r الذي يتم حسابه بمعلومية الرقم 4 وهو عدد الأعمدة

    Range(Cells(1, c), Cells(1, c).Offset(5, 3)).Cut (Cells(r, 1))

Next c

End Sub


يعني الرقم بعد Step هو عدد الأعمدة

For c = 5 To LC Step 4

وكذلك المرتين للرقم 4 في السطر

r = (Int((c - 4) / 4) + 1) * 6 + 1

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

الاخ طارق

ما هو المعيار الموجود بالكود الذى يتحدد بناء عليه رقم الصف

بمعنى ماذا لو ان البيانات تبدأ من الخليه b2 بدلا من a1

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

الأخ الفاضل / الباشمهندس طارق

بعد التحية

من منطق محاولة التعلم من خبرات الأساتذة الكبار مثل حضرتك قمت بعمل بعض التعديلات البسيطة على الكود



Sub TRANS()

LC = [IV1].End(xlToLeft).Column

r = 7

For c = 5 To LC Step 4

	Cells(1, c).Resize(6, 4).Cut (Cells(r, 1))

	r = r + 6

Next c

End Sub

Sub TRANS2()

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

c = 5

For r = 7 To LR Step 6

	Range("A" & r).Resize(6, 4).Cut (Cells(1, c))

	c = c + 4

Next r

End Sub


صفوف-اعمدة 1_TAREQ3.rar

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

الاخ رجب

مشكورا على المجهود الرائع

ممكن شرح الكود

بمعنى ماذا تعنى LC = [iV1].End(xlToLeft).Column

وماذا For c = 5 To LC Step 4

وماذا تعنى Cells(1, c).Resize(6, 4).Cut (Cells(r, 1))

r = r + 6

وماذا تعنى

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

وماذا تعنى

For r = 7 To LR Step 6

Range("A" & r).Resize(6, 4).Cut (Cells(1, c))

c = c + 4

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

أخى ابراهيم

السطر التالى خاص بالحصول على أخر عمود يحتوى على بيانات ( فى الصف الأول)

LC = [iV1].End(xlToLeft).Column

r = 7

الجزء التالى حلقة تكرارية تبدأ من الرقم 5 حتى أخر عمود به بيانات حصلنا عليه فى الخطوة السابقة

أما الجزء step 4 فهو يحدد مقدار الزيادة التى تتم على المتغير c

أى فى الخطوة الأولى يكون c = 5 ثم الخطوة التالية يكون 9 وهكذا

For c = 5 To LC Step 4

السطر التالى اعادة تحجيم ل 6 أعمدة و 4 صفوف ابتداءا من الخلية المذكورة فى البداية (1, c )

ثم قص الخلايا المذكورة ولصقها فى الخلية ( r , 1 )

Cells(1, c).Resize(6, 4).Cut (Cells(r, 1))

فى السطر التالى نزيد 6 على قيمة r

r = r + 6

الكود الثانى نفس فكرة الكود الأول

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

الاخ رجب

مشكورا لك التوضيح

ولكن استكمالا للفهم الاكثر

ممكن شرح الخطأ

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

واذا لم يكن صحيح فارجو التعديل

صفوف-اعمدة 1_TAREQ3.rar

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

أخى ابراهيم

هناك تعديل واحد فقط وهو تغير الرقم 2 بالرقم 3 فى السطرين التاليين


	Cells(2, c).Resize(6, 4).Cut (Cells(r, 1))


Range("A" & r).Resize(6, 4).Cut (Cells(2, c))

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

الاخ رجب بارك الله فيك

ولكن الحمد لله الان استطعت تفهم جميع محتويات الكود

وهذا يرجع الى حسن تعاونك

اللهم اجعله فى ميزان حسناتك

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

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

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



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

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

Important Information