Condividi:        

Excel . riferimenti variabili in formula con intervallo

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel . riferimenti variabili in formula con intervallo

Postdi fardi » 19/06/20 22:25

Buonasera a tutti,
vorrei sommare due colonne, ad esempio con somma(a1:a10+b1:b10), però vorrei che i 4 estremi citati (a1,a10,b1,b10) fossero ccollegati al contenuto di altre 4 celle distinte (ad esempio c1,d1,e1,f1) che possano opportunamente varire e modificare i 4 estremi della somma iniziale.
Vi ringrazio molto per il supporto che potrete darmi!
fardi
Utente Junior
 
Post: 11
Iscritto il: 07/02/18 18:45

Sponsor
 

Re: Excel . riferimenti variabili in formula con intervallo

Postdi Marius44 » 20/06/20 06:12

Ciao
Confesso che non ho capito cosa vuoi fare :eeh:
Forse sarebbe il caso di allegare un esempio (senza dati sensibili) col risultato atteso scritto a mano.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Excel . riferimenti variabili in formula con intervallo

Postdi fardi » 20/06/20 14:39

Ops...cerco di spiegarmi meglio :) anche con l'allegato...
La tabella di partenza è "OreAddettiAttività". Indica le ore svolte in varie attività da alcuni dipendenti, in differenti mesi in corrispondenza dei quali è riportato il costo orario dell'ora lavorata.

Nella tabella "costoAttività" grazie a matrice.somma.prodotto ho calcolato il valore economico per pgni attività dato dalle ore svolte per il costo orario di ciscuna. Tale valore economico è riportato nei differenti "periodi" che sono raggruppamenti di ampiezza variabile di mesi, quelli della prima tabella.

La tabella"ampiezzaPeriodiAttività" definisce quanti mesi sono raggruppati in ciascun periodo della tabella precedente. Quindi volevo poter modificare tramite questa tabella "ampiezzaPeriodiAttività" la formula matrice.somma.prodotto della tabella "costoAttività".
Un mio maldestro tentativo è nell'ultima tabella della pagina "NuovaCostoAttività". In realtà avevo provato usato INDIRETTO ma con poca fortuna...
Spero di aver semplificato un pò lo sforzo di chi potrà supportarmii...Resto a disposizione per qualsiasi chiarimento...
Ciao, Francesco .... mi accorgo ora di non poter allegare, occorrono dei permessi? o non trovo io il pulsante...?
fardi
Utente Junior
 
Post: 11
Iscritto il: 07/02/18 18:45

Re: Excel . riferimenti variabili in formula con intervallo

Postdi fardi » 20/06/20 14:47

forse posso provare allegando un link dropbox?
https://www.dropbox.com/s/6w72r9gq0dwq6 ... .xlsx?dl=0
fardi
Utente Junior
 
Post: 11
Iscritto il: 07/02/18 18:45

Re: Excel . riferimenti variabili in formula con intervallo

Postdi Anthony47 » 21/06/20 20:37

Anche in questo caso, a farlo con formule io rischierei di grippare il mio neorone di sinistra; quindi suggerisco un "funzione personalizzata".
Cominciamo a descrivere i vari periodi, come ho fatto qui sotto nell'area in verde:
Immagine

Per ogni periodo viene descritta la cella di inizio, il numero di colonne, la cella di inizio dei costi unitari da utilizzare per il periodo (area in Verde, nell'immagine)
A questo punto possiamo codificare la "funzione personalizzata byPeriod" corrispondente al seguente listato:
Codice: Seleziona tutto
Function byPeriod(ByRef Mapper As Range, ByRef myDRan As Range) As Variant
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=111411
Dim oArr() As Double, I As Long, J As Long, K As Long
Dim cCNum As Long, cCost As Single, mySt As Range, dataSh As String, paraSh As String
'
ReDim oArr(1 To Parent.Caller.Rows.Count, 1 To Parent.Caller.Columns.Count)
dataSh = myDRan.Parent.Name
paraSh = Mapper.Parent.Name
For I = 1 To myDRan.Rows.Count
    cCNum = myDRan.Cells(I, 1)
    If cCNum > 0 Then
        For J = 1 To Mapper.Columns.Count
            If cCNum > UBound(oArr) Then Exit For
            If Mapper.Cells(1, J).Value = "" Then Exit For
            cCost = Sheets(paraSh).Range(Mapper.Cells(3, J).Value).Value
            Set mySt = Sheets(dataSh).Range(Mapper.Cells(1, J).Value)
            For K = 1 To Mapper.Cells(2, J).Value
                oArr(cCNum, J) = oArr(cCNum, J) + mySt.Cells(I, K).Value * cCost
            Next K
        Next J
    End If
Next I
byPeriod = oArr
End Function

Il codice va inserito in un "Modulo standard" del progetto vba del tuo file; per qualche informazione aggiuntiva: viewtopic.php?f=26&t=103893&p=647675#p647675

A questo punto potremo usare una formula del tipo:
Codice: Seleziona tutto
=byPeriod(AreaDeiParametri;AreaDellaTabellaDati)

AreaDeiParametri corrisponde all'area in Verde mentre AreaDellaTabellaDati parte dalla colonna che contiene il "codice attività" (quindi C, nel tuo file dimostrativo) e deve contenere tutte le righe di cui si vuole contabilizzare il contenuto.

Cio' detto, la formula che ho utilizzato nell'area C24:G27 e'
Codice: Seleziona tutto
=byPeriod(C30:G32;C3:U17)

La formula va introdotta in "forma di matrice" nell'area in cui si vogliono i risultati, e il numero di colonne non deve essere inferiore alle colonne compilate dei parametri

Per introdurla in forma matriciale:
-selezionare l'area dei risultati, quindi C24:G27
-inserire la formula nella barra della formula
-confermare con Contr-Maiusc-Enter, non il solo Enter

Note finali:
-Non e' fondamentale che si indichino in AreaDellaTabellaDati tutte le colonne della tabella, ma e' meglio se lo si fa, perche' in questo caso una eventuale modifica in quelle celle ricalcola immediatamente i risultati.
-la formula va introdotta in "forma di matrice" nell'area in cui si vogliono i risultati, e il numero di colonne non deve essere inferiore alle colonne compilate dei parametri
-il codice di attivita' di colonna C deve essere in formato numerico; nella tabella riepilogativa ogni riga corrisponde a un codice attivita'; questo significa che se sono stati usati i codici attivita' da 1 a 8 allora la formula andrebbe introdotta su almeno 8 righe, e se qualche codice viene saltato la relativa riga contabilizzera' 0; questo significa anche che il contenuto di B24:B27 e' solamente una intestazione che non corrisponde automaticamente al contenuto della riga (cioe' la seconda riga dei risultati contabilizza le attivita' marcate con codice attivita' = 2, anche se l'intestazione fosse ad es. 15)

Prova e vediamo cosa salta fuori...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19465
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Excel . riferimenti variabili in formula con intervallo":


Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti