Ahmed Ahmed64 نشر 17 يناير 2023 أرسل تقرير مشاركة نشر 17 يناير 2023 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") تعديل الكود حيث يمر على كل إسم وينفذ كما نفذ هذا الكود اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Kais Hasan نشر 18 يناير 2023 أرسل تقرير مشاركة نشر 18 يناير 2023 سأعطيك الفكرة العامة و يمكنك محاولة تطبيقها لوحدك حيث أنها تقريبا نفس الكود الخاص بك. بشكل أساسي أنت تريد المرور على كل اسم، كل اسم يحوي سطرين، و بالتالي بدلاً من كودك الذي يقوم بوضع قيم الأسطر بشكل ثابت يمكننا القيام بذلك بشكل ديناميكي باستعمال حلقة for. إن الأسطر الخاصة بالأسماء تبدأ من السطر الثاني و بالتالي يمكننا بدء حلقة ال for من ال 2، و في كل مرة نقوم بزيادتها بمقدار 2 (حيث أن كل اسم يحتاج سطرين)، في حال كان اسم المتغير الخاص بالحلقة هو i فإننا نريد الأسطر i و i+1. الباقي نفس الشيء حيث أن الأعمدة لا تختلف هنا. 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Ahmed64 نشر 18 يناير 2023 الكاتب أرسل تقرير مشاركة نشر 18 يناير 2023 أخي إستصعب علي الكود هل هذه البداية صحيحة حيث أنه أريد البحث في عمودين لكل إسم و إيجاد أكبر قيمة مثلا في مادة عربي يكشف عن العمود E و العمود F for row in ws.iter_rows(row=2, col=5,values_only=True): id=row 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Kais Hasan نشر 18 يناير 2023 أرسل تقرير مشاركة نشر 18 يناير 2023 بتاريخ 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 و رقم السطر بعدها. رقم السطر يكون في الحلقة. 1 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Ahmed64 نشر 18 يناير 2023 الكاتب أرسل تقرير مشاركة نشر 18 يناير 2023 (معدل) هل بهذه الكيفية الكود يكتب 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 تم التعديل في 18 يناير 2023 بواسطة Ahmed Ahmed اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Ahmed64 نشر 18 يناير 2023 الكاتب أرسل تقرير مشاركة نشر 18 يناير 2023 أين الخطأ هنا 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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Ahmed64 نشر 18 يناير 2023 الكاتب أرسل تقرير مشاركة نشر 18 يناير 2023 توصلت لهذه المرحلة كيف أجعل الكود يمر الخانات الفارغة دون حدوث خطأ سؤال أخر ( كيف أجعل النتيخة في العمود 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 اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Ahmed Ahmed64
تعديل الكود حيث يمر على كل إسم وينفذ كما نفذ هذا الكود
رابط هذا التعليق
شارك على الشبكات الإجتماعية
6 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.