اذهب إلى المحتوى

السؤال

نشر
import openpyxl
wb = openpyxl.load_workbook("test.xlsx")
ws=wb['ورقة1']

if ws['E2'].value >50:
   ws['G2'] = ws['E2'].value
elif  ws['F2'].value >50: 
    ws['G2'] = ws['F2'].value
elif  ws['F3'].value >50: 
    ws['G2'] = ws['F3'] .value
 
else:
   ws['L2'] = ws['E2'].value

wb.save("test.xlsx")

تعديل الكود حيث يمر على كل إسم وينفذ كما نفذ هذا الكود 

image.png.97eb3516b08acbd05c773ac9eefbe5b6.png

Recommended Posts

  • 0
نشر

سأعطيك الفكرة العامة و يمكنك محاولة تطبيقها لوحدك حيث أنها تقريبا نفس الكود الخاص بك.

بشكل أساسي أنت تريد المرور على كل اسم، كل اسم يحوي سطرين، و بالتالي بدلاً من كودك الذي يقوم بوضع قيم الأسطر بشكل ثابت يمكننا القيام بذلك بشكل ديناميكي باستعمال حلقة for.

إن الأسطر الخاصة بالأسماء تبدأ من السطر الثاني و بالتالي يمكننا بدء حلقة ال for من ال 2، و في كل مرة نقوم بزيادتها بمقدار 2 (حيث أن كل اسم يحتاج سطرين)، في حال كان اسم المتغير الخاص بالحلقة هو i فإننا نريد الأسطر i و i+1.

الباقي نفس الشيء حيث أن الأعمدة لا تختلف هنا.

  • 0
نشر

أخي إستصعب علي الكود هل هذه البداية صحيحة حيث أنه أريد البحث في عمودين لكل إسم و إيجاد أكبر قيمة مثلا في مادة عربي يكشف عن العمود E  و العمود F

for row in ws.iter_rows(row=2, col=5,values_only=True):

    id=row

 

  • 0
نشر
بتاريخ 55 دقائق مضت قال Ahmed Ahmed:

أخي إستصعب علي الكود هل هذه البداية صحيحة حيث أنه أريد البحث في عمودين لكل إسم و إيجاد أكبر قيمة مثلا في مادة عربي يكشف عن العمود E  و العمود F

for row in ws.iter_rows(row=2, col=5,values_only=True):

    id=row

 

تحتاج لحلقة for عادية تمر على الأرقام و ليس على السطور بشكل مباشر، حيث أنه يمكنك أن تجعل الخطوة بمقدار 2 و ذلك عن طريق ثالث وسيط في ال range.

يمكنك تكوين اسم الخانة على شكل سلسلة نصية، لاحظ في كودك قمت بوضع E2 هنا بدل هذا يمكنك وضع E و رقم السطر بعدها.

رقم السطر يكون في الحلقة.

  • 0
نشر

أين الخطأ هنا 

for ws_row in range (2,ws.max_row+1):
    g=ws.cell(ws_row,5).value
    r=ws.cell(ws_row,6).value
    q=ws.cell(ws_row+1,6).value
    
    if g.value ==int(50):
       ws.cell(row=ws_row,column=7).value = g
    elif r.value ==int(50):
        ws.cell(row=ws_row,column=7).value =r 
    elif q.value ==int(50):
        ws.cell(row=ws_row,column=7).value = q 

 

  • 0
نشر

توصلت لهذه المرحلة 

كيف أجعل الكود يمر الخانات الفارغة دون حدوث خطأ

سؤال أخر ( كيف أجعل النتيخة في العمود G والذي يحتوي على خلايا مدموجة

for ws_row in range (2,ws.max_row,2):
   for wk in range (2,ws.max_row,1):
   
    
    if ws.cell(ws_row,5).value > 50:
       ws.cell(row=ws_row,column=8).value = ws.cell(ws_row,5).value
      
    elif ws.cell(wk,6).value > 50:
        ws.cell(row=wk,column=8).value = ws.cell(wk,6).value

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

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

×   جرى استعادة المحتوى السابق..   امسح المحرر

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...