In questo articolo, creeremo una funzione personalizzata per calcolare la somma dei valori nell’intervallo di fogli diversi.

Creeremo tre diverse funzioni personalizzate che calcoleranno la somma dei valori nell’intervallo di altri fogli, in base al nome del foglio, al numero del foglio e al riferimento del foglio dal foglio attivo.

I dati grezzi per questo esempio sono costituiti da quattro fogli. Ogni foglio contiene i dettagli del numero di articoli venduti da ciascun membro del team nell’intervallo da B7 a B16 per un determinato giorno. Abbiamo preso i dati per il 1 ^ st ^ giorno, 2 ^ nd ^, 3 ^ rd ^ e l’ultimo giorno del mese.

ArrowFirstDay

Spiegazione logica

In questo esempio, abbiamo creato tre funzioni personalizzate che sono: -. SumBySheetName. SumBySheetNumber. SumByOffsetSheetNumber. SumBySheetName: – Questa funzione personalizzata accetta l’intervallo e il nome del foglio come parametri di input. Restituisce la somma dei valori nell’intervallo definito del nome del foglio definito.

  1. SumBySheetNumber: – Questa funzione personalizzata accetta l’intervallo e il numero del foglio come parametri di input. Restituisce la somma dei valori nell’intervallo definito per il numero di foglio definito.

  1. SumByOffsetSheetNumber: – Questa funzione prende l’intervallo e l’offset dal foglio attivo come parametri di input. Restituisce la somma dei valori nell’intervallo definito del foglio definito dall’indice di offset.

Ogni foglio della cartella di lavoro mostra il totale degli articoli venduti il ​​primo giorno, il giorno precedente, il giorno corrente, il giorno successivo e l’ultimo giorno.

Se osservi attentamente la funzione personalizzata, scoprirai che tutti e quattro i fogli utilizzano la stessa funzione personalizzata con gli stessi parametri.

La funzione personalizzata “SumBySheetNumber” viene utilizzata per calcolare il totale degli articoli venduti il ​​primo giorno, poiché il primo foglio conterrà sempre i dati del primo giorno del mese.

La funzione personalizzata “SumByOffsetSheetNumber” viene utilizzata per calcolare il totale degli articoli venduti il ​​giorno precedente, corrente e successivo poiché i fogli nella cartella di lavoro sono disposti in sequenza di date.

La funzione personalizzata “SumBySheetName” viene utilizzata per calcolare il totale degli articoli venduti l’ultimo giorno del mese, poiché il nome del foglio dell’ultimo giorno sarà sempre “LastDayOfMonth”.

ArrowSecondDay

ArrowThirdDay

ArrowLastDay

Spiegazione del codice

WorksheetFunction.Sum L’oggetto WorksheetFunction viene utilizzato per accedere alle funzioni dei fogli di Excel da Visual Basic. Abbiamo utilizzato la funzione SOMMA del foglio Excel per aggiungere i valori nell’intervallo.

InputRange.Address Il codice sopra viene utilizzato per restituire l’indirizzo dell’intervallo specificato dall’oggetto intervallo “InputRange”.

Segui sotto per il codice

Option Explicit

Function SumBySheetName(InputRange As Range, Optional SheetName As Variant)

'Declaring variable

Dim SheetIn As Worksheet

'Checking whether value is assigned to optional parameter

'IF optional parameter is missing then generate sum for range in the active sheet

If IsMissing(SheetName) Then

SumBySheetName = WorksheetFunction.Sum(InputRange)

Exit Function

End If

'Looping through sheets in the worksheets collection

For Each SheetIn In Worksheets

'Checking whether specified sheet exist in the worksheets collection

If SheetName = SheetIn.Name Then

'Calculating the sum for specified range of the specified sheet

SumBySheetName = WorksheetFunction.Sum(Worksheets(SheetName).Range(InputRange.Address))

Exit Function

End If

Next

SumBySheetName = "Specified Sheet doesn't exist in the workbook"

End Function

Function SumBySheetNumber(InputRange As Range, Optional SheetIndex As Integer = 0)

'Checking whether optional parameter is missing or sheet index is assigned zero value

If SheetIndex = 0 Then

SumBySheetNumber = WorksheetFunction.Sum(InputRange)

'Checking whether sheet index is greater than number of sheets in the workbook

ElseIf SheetIndex > Sheets.Count Then

SumBySheetNumber = "Sheet Index is greater than number of sheets in the workbook"

Else

SumBySheetNumber = WorksheetFunction.Sum(Worksheets(SheetIndex).Range(InputRange.Address))

End If

End Function

Function SumByOffsetSheetNumber(InputRange As Range, Optional SheetOffset As Integer = 0)

'Error Handling

On Error GoTo Last

'Calculating sum

SumByOffsetSheetNumber = WorksheetFunction.Sum(Worksheets(InputRange.Worksheet.Index + _

SheetOffset).Range(InputRange.Address))

Exit Function

Last:

SumByOffsetSheetNumber = "Referred Sheet not exists"

End Function

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]