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

تنفيذ عملية معينة على كافة الأسماء في ملف excel باستعمال python

Ahmed Ahmed64

السؤال

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,4)
    x=ws.cell(ws_row,5)
    if g.value >int(50):
        x.value=g.value
    print(g.value)
    ws_row = ws_row + 2

 

تم التعديل في بواسطة Ahmed Ahmed
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...