פורום שאלות ותשובות

ברוכים הבאים לפורום שאלות ותשובות באופיס

ניתן לשאול שאלות טכניות באקסל, וורד, פאורפוינט, אוטלוק, שיירפוינט ושאר יישומי אופיס ללא צורך להירשם וללא עלות

מ' שואל:

יש לי אקסל בעלת גליונות רבים מאוד הגיליון הראשון נקרא בשם "גיליון ראשון" והגיליון האחרון נקרא בשם "גיליון אחרון" ואחרי הגיליון האחרון הוספתי עכשיו גליון בשם סיכום.
בכל בגיליונות [חוץ משלוש הגיליונות] יש בעמודה A שמות ובעמודה H מספרים,
אני רוצה שבגיליון סיכום יהיה לי אפשרות בעמודה A לכתוב שמות המופיעים לפחות פעם אחת
באחד מכלל הגיליונות באקסל בעמודה A, ואוטומטית בעמודה B ליד השם שכתבתי
יסוכם סה"כ של כל המספרים המופיעים בעמודה H על אותו שם.

תשובה:

ניתן לבצע זאת באקסל על ידי שימוש בקוד VBA.

לדוגמא:

נגדיר בקובץ אקסל שני גליונות  "1" ו-"2".  בכל גיליון אקסל בעמודה A נגדיר שמות ובעמודה H נגדיר כמות.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

נפתח את עורך VBA ע"י לחיצה על Alt+F11 ואז נבחר ב-Insert -> Module ונדביק את הקוד הבא - 

Option Explicit

Public Sub UpdateSummary()

    Dim ws As Worksheet, lastSummaryRow As Long, lastDataRow As Long
    Dim i As Long, personName As String, total As Double

    With ThisWorkbook.Worksheets("סיכום")

        lastSummaryRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 2 To lastSummaryRow

            personName = Trim(.Cells(i, "A").Value)
            total = 0

            If personName <> "" Then

                For Each ws In ThisWorkbook.Worksheets

                    Select Case ws.Name

                        Case "גיליון ראשון", "גיליון אחרון", "סיכום"
                            'do nothing 

                        Case Else

                            lastDataRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

                            If lastDataRow >= 2 Then
                                        total = total + Application.SumIf(   ws.Range("A2:A" & lastDataRow), personName,  ws.Range("H2:H" & lastDataRow))
                            End If

                    End Select

                Next ws

                .Cells(i, "B").Value = total

            Else
                .Cells(i, "B").ClearContents
            End If

        Next i

    End With

    MsgBox "הסיכום עודכן בהצלחה", vbInformation

End Sub

 

 

נוסיף גיליון "סיכום" שבו בעמודה A נגדיר שמות ובתא B1 נגדיר כותרת "כמות"

נוסיף לחצן להפעלת מודול VBA באופן הבא - נוסיף צורת מלבן מתפריט צורות, נכתוב עליו "חשב סיכום" ואז נסמן אותו, נלחץ על לחצן ימני ונבחר בשייך מקרו. נבחר ב-UpdateSummary ונלחץ אישור.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

התוצאה - בעמודה כמות תופיע סך הכמות לשם מכל הגיליונות מלבד "גיליון ראשון", "גיליון אחרון" ו-"סיכום"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
כדי שהמקרו יישמר יש לשמור את הקובץ בפורמט XLSM.
כדי לאפשר הפעלת קוד מקרו באקסל יש לבחור בקובץ -> אפשרויות -> מרכז יחסי אמון -> הגדרות מרכז יחסי אמון -> הגדרות מקרו -> סימון "הפוך כל פקודות מקרו לזמינות" ואישור.
 
בברכה,
צוות אניפיט