19

سلام
در یک کلاس چندین آزمون برای دروس فیزیک شیمی ریاضی و ... گرفته شده است . می خواهیم با استفاده از فرمول ماکرو ( بدون فیلتر) نام و نام خاوادگی فردی که بیشترین نمره فیزیک را داشته همراه با لیست دیگر نمرات آنرا مشاهده کنیم.
اگر چند نفر بیشترین نمره ر داشتند لیست همه آن افراد در یک شیت دیگر نمایش داده شود

توسط mehdi_bu58 (2 امتیاز)

1 پاسخ

0 امتیاز

سلام!

برای پیدا کردن فردی که بیشترین نمره در درس فیزیک را دارد و همچنین نمایش دیگر نمرات آن، می‌توانید از ماکرو در نرم‌افزار اکسل استفاده کنید. در ادامه مراحل لازم را برای نوشتن کد ماکرو توضیح می‌دهم:

مراحل نوشتن ماکرو

  1. باز کردن ویرایشگر ماکرو:
    - به تب "Developer" (توسعه دهنده) بروید. اگر این تب نمایش داده نمی‌شود، می‌توانید آن را از تنظیمات فعال کنید.
    - روی "Visual Basic" کلیک کنید.

  2. ایجاد یک ماژول جدید:
    - در ویرایشگر Visual Basic، روی "Insert" کلیک کنید و سپس "Module" را انتخاب کنید.

  3. نوشتن کد ماکرو:
    - در ماژول جدید، کد زیر را وارد کنید:

    `vba
    Sub FindMaxPhysicsScore()

    Dim ws As Worksheet
    Dim maxScore As Double
    Dim i As Long
    Dim resultRow As Long
    Dim found As Boolean
    Dim outputSheet As Worksheet
    
    Set ws = ThisWorkbook.Sheets("نام شیت شما") ' نام شیت اصلی را جایگزین کنید
    Set outputSheet = ThisWorkbook.Sheets.Add ' ایجاد یک شیت جدید برای نتایج
    outputSheet.Name = "نتایج"
       
    maxScore = Application.WorksheetFunction.Max(ws.Range("B:B")) ' فرض بر این است که نمرات فیزیک در ستون B هستند
    resultRow = 2 ' شروع از ردیف دوم برای نتایج
    
    outputSheet.Cells(1, 1).Value = "نام"
    outputSheet.Cells(1, 2).Value = "نام خانوادگی"
    outputSheet.Cells(1, 3).Value = "نمره فیزیک"
    outputSheet.Cells(1, 4).Value = "نمرات دیگر" ' برای نمرات دیگر میتوانید ستون‌های مختلف اضافه کنید
    
    found = False
    
    For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
        If ws.Cells(i, 2).Value = maxScore Then ' بررسی نمره بیشینه فیزیک
            outputSheet.Cells(resultRow, 1).Value = ws.Cells(i, 1).Value ' نام
            outputSheet.Cells(resultRow, 2).Value = ws.Cells(i, 2).Value ' نام خانوادگی
            outputSheet.Cells(resultRow, 3).Value = maxScore ' نمره فیزیک
            outputSheet.Cells(resultRow, 4).Value = ws.Cells(i, 3).Value ' فرض بر این است که نمرات دیگر در ستون‌های بعد قرار دارند
    
            resultRow = resultRow + 1
            found = True
        End If
    Next i
    
    If Not found Then
        MsgBox "هیچ نمره ای با این شدت پیدا نشد!"
    End If
    

    End Sub
    `

  4. اجرا کردن ماکرو:
    - بعد از نوشتن کد، بر روی دکمه "Run" در نوار ابزار کلیک کنید یا از کلید F5 استفاده کنید.

نکات مهم:

  • نام شیت حاوی نمرات را در قسمت Set ws = ThisWorkbook.Sheets("نام شیت شما") وارد کنید.
  • به جای Columns("B:B") می‌توانید ستون‌هایی که نمرات دیگر در آن قرار دارند را نیز تغییر دهید.

نتیجه‌گیری:

بعد از اجرای ماکرو، یک شیت جدید ایجاد می‌شود که نام و نام خانوادگی افرادی که بیشترین نمره فیزیک را دارند به همراه نمرات دیگر آن‌ها در آن ثبت شده است.

توسط ChatGPT (39 امتیاز)
...