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

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

قام بنشر

الاساتذه الكرام

بالملف المرفق بيانات موضوعها فى عده اعمده ( 12 ) عمود وقد تصل إلى 100 عمود

والمطلوب : عمل كود يقوم بتجميع الاعمده فى عمود واحد بحيث يبدأ ببيانات العمود الاول ثم اسفله بيانات العمود الثانى وهكذا

وليس المقصود دمج المحتويات بمعنى لا نستخدم CONCATENATEدالة

لانها غير المقصوده

تجميع اعمده فى عمود.rar

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

استاذنا الكبير

احمد عبد الناصر

زادكم الله من علمه كود ولا اروع

كل مشاركاتكم مؤثرة ونتعلم منها لذلك لو تكرمت ممكن شرح الكود

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

الاول : لبيانات رقمية

والثانى لبيانات نصية

+تجميع اعمده فى عمودنصى وآخر رقمى.rar

تم تعديل بواسطه عادل ابوزيد
قام بنشر

السلام عليكم

 

جرب هذا 

Sub Dahmour()
arr = Range("e3:" & Cells.SpecialCells(xlCellTypeLastCell).Address)
For Each i In arr
If Not IsEmpty(i) Then
If IsNumeric(i) Then
Cells(r + 3, 2) = i
Else
Cells(rr + 3, 3) = i
rr = rr + 1
End If
r = r + 1
End If
Next
End Sub

ملاحظة : يترك فراغات في العمود B كما في الملف . لا اعلم  ان كان هذا مقصود .

 

تحياتي

  • Like 1
قام بنشر

الاستاذ الفاضل العزيز

ترك الفراغات غير مقصود حيث تم عملها يدوياً لاوضح المطلوب ان كان مكانها الاسماء

وبرجاء تعديل الكود لعدم رغبتى فى وجود فراغات مع شرحه اذا تكرمت

قام بنشر

السلام عليكم

 

استاذ عادل 

 

جرب هذه 

Sub Dahmour()
arr = Range("e3:" & Cells.SpecialCells(xlCellTypeLastCell).Address)
For Each i In arr
If Not IsEmpty(i) Then
If IsNumeric(i) Then
Cells(r + 3, 2) = i
r = r + 1
Else
Cells(rr + 3, 3) = i
rr = rr + 1
End If
End If
Next
End Sub

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

 

تحياتي

  • Like 1
قام بنشر

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

استاذنا الكبير
احمد عبد الناصر
زادكم الله من علمه كود ولا اروع
كل مشاركاتكم مؤثرة ونتعلم منها لذلك لو تكرمت ممكن شرح الكود
ولو تكرمت لى اضافة فى طلبى كما بالمرفق وهو ان يتم عمل عمودين
الاول : لبيانات رقمية
والثانى لبيانات نصية

 أخي الكريم عادل، لأجل ذلك، وأسنسمح أخي الحبيب أحمد، أبدل الكود السابق بالكود التالي:

 

Sub Dahmour()
arr = Range("e3:" & Cells.SpecialCells(xlCellTypeLastCell).Address)
For Each i In arr
If Not IsEmpty(i) And IsNumeric(i) Then Cells(r + 3, 2) = i: r = r + 1
If Not IsEmpty(i) And IsNumeric(i) = False Then Cells(t + 3, 3) = i: t = t + 1
Next
End Sub

 

 

أخوك بن علية

قام بنشر

الاستاذ العزيز القدير احمد عبد الناصر

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

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

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

بخصوص الشرح

هل من الممكن شرح هذا السطر ماذا يعنى

arr = Range("e3:" & Cells.SpecialCells(xlCellTypeLastCell).Address)

وماذا تعنى هذه الاسطر

Cells(r + 3, 2) = i

r = r + 1

Else

Cells(rr + 3, 3) = i

قام بنشر

السلام عليكم

 

شكرا على كلماتك الجميلة و دعائك ,غفر الله لنا ولكم و سائر المسلمين .

 

arr = Range("e3:" & Cells.SpecialCells(xlCellTypeLastCell).Address)

هذا السطر ياتي بنطاق البيانات بداية من الخلية E3 ويتسع حتي عنوان Address اخر خلية مستخدمة في الاكسيل مثلا في الملف اخر خلية هي $AN$38

ربما هذه الطريقة تاتي بنطاق اكبر من الحاجة لكنها والله اعلم افضل طريقة للاحاطة بكل البيانات . 

وبهذا فتكون الجملة 

arr = Range("e3:$AN$38")

وبهذا يتم تخصيص المجموعة array المسماة arr بقيم النطاق .

 

وهدف هذه الخطوة انه تمكنا من الدوران loop في البيانات  علي هيئة عمود عمود من الاعلى للاسفل .

 

اما لو استخدمت loop مع النطاق مباشرة فستكون النتيجة علي صف صف من اليمين لليسار .

 

تحياتي 

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