Condividi:        

[Excel] Problema di Matrice 3D ed anche 4D

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

Postdi gik » 12/09/06 11:28

Salve, girando per internet ho trovato questa funzione che potrebbe fare al caso mio, consente di individuare i worksheets relativamente a quello attivo.

Codice: Seleziona tutto
Function SHEETOFFSET(offset, Ref)
'   Returns cell contents at Ref, in sheet offset
    Application.Volatile
    With Application.Caller.Parent
        SHEETOFFSET = .Parent.Sheets(.Index + offset) _
         .Range(Ref.Address).Value
    End With
End Function


In questo modo per richiamare la cella A1 del foglio precedente inserirò

Codice: Seleziona tutto
=SHEETOFFSET(-1,A1)


chiaramente ognuno darà alla funzione il nome più appropriato per usarla al meglio.

Domandona.....
Come posso utilizzare questa funzione direttamente all'interno di una formula in una cella?

Mi consigliate un metodo per inserire la stessa formula in tutte le celle di un array tridimensionale?
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Sponsor
 

Postdi Anthony47 » 12/09/06 14:33

Ciao gik,
dopo tanto tempo non ricordo piu' i termini del problema; mi limito quindi a rispondere ai tuoi ultimi messaggi, sperando che serva.

Ottimo l' idea della funzione SHEETOFFSET per affrontare il problema degli N fogli ognuno che fa riferimento al foglio precedente, che si puo' risolvere cosi':

1) lascia sut tuo file solo i fogli t0 e t1
2) In t1, cella A1, metti la formula =SOFF(A1,-1)*$M$1 (dara' errore fino allo step 4, non preoccuparti)
SOFF e' il nome che ho dato alla tua "funzione" sheetoffset, l'ho accorciato perche' pensavo di doverlo digitare piu' volte)

3) Copia A1 nel resto delle tue celle (B1:H11)

4) copia la seguente macro su Modulo1
Codice: Seleziona tutto
Function Soff(Ref, offset)
'   Returns cell contents at Ref, in sheet offset
    Application.Volatile
    With Application.Caller.Parent
        Soff = .Parent.Sheets(.Index + offset) _
         .Range(Ref.Address).Value
    End With
End Function


(e' la tua sheetoffset; ho invertito Ref e offset perche' avevo in mente un' altra cosa che poi non e' stata necessaria)

5) copia la seguente macro su Modulo1
Codice: Seleziona tutto
Sub TMaker()
    Sheets("t1").Select
For I = 1 To 3      <<<<<<   CAMBIARE COME SERVE
    SName = ActiveSheet.Name
    SNum = Right(SName, Len(SName) - 1)
    ActiveSheet.Copy After:=ActiveSheet
    ActiveSheet.Name = ("t" & SNum + 1)
Next
End Sub


Questa macro creera' N fogli come t1 accodandoli a t1 (la posizione e' importante visto l' uso del "foglio offset"). Se sai gia' quanti fogli devi creare, cambia nell' istruzione FOR il limite superiore.

A questo punto, lanci la macro TMaker e il gioco e' fatto.

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

Postdi gik » 12/09/06 16:11

Grazie Antony funziona benone ;)
a parte questo piccolo dettaglio che riporto per i posteri:
metti la formula =SOFF(A1,-1)*$M$1


non va bene, bisogna inserire =SOFF(A1;-1)

Domanda, ma per far partire le funzioni devono essere introdotte in modulo1? Io avevo provato in ThisWorkbook ma non funziona.

Ora se io volessi creare n fogli tn con n che mi è dato da una formula?
ad esempio n=Arrotonda per eccesso(durata/Dt)

dove "durata" è una cella con un numero e "Dt" un altro numero,
oppure direttamente "n" è il nome di una cella in cui è presente la funzione.
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Postdi gik » 12/09/06 16:29

http://gik77.altervista.org/_altervista ... azione.xls


Ora ho per ogni foglio tn una riga AA1:DV1 con tutti i valori della relativa tabella, vorrei inserire tutte queste righe in un foglio di sommario

e creare un grafico sovrapponendo i valori delle singole tabelle, ossia un grafico "dinamico" che possa presentare in sequenza i valori delle varie tabelle, mostrando come crescono nel tempo....
magari potendo anche scegliere da un menù il tempo tn da diagrammare.......

Sapete se si può fare? O è fantascienza :-?
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Postdi Anthony47 » 12/09/06 19:04

Ora se io volessi creare n fogli tn con n che mi è dato da una formula?
ad esempio n=Arrotonda per eccesso(durata/Dt)

dove "durata" è una cella con un numero e "Dt" un altro numero,
oppure direttamente "n" è il nome di una cella in cui è presente la funzione
Vedo che in t0 hai gia’ calcolato (in O1) il numero; allora nella macro TMaker userai
Codice: Seleziona tutto
For I = 1 To Range("O1").Value
Ora ho per ogni foglio tn una riga AA1:DV1 con tutti i valori della relativa tabella, vorrei inserire tutte queste righe in un foglio di sommario
Per questo facciamo cosi’:
1- ti crei un foglio Summary, tramite questa macro (cosi’ siamo sicuri che e’ in ultima posizione e non falsifica il discorso dello SHEETOFFSET:
Codice: Seleziona tutto
Sub AggiungiSummary()
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "Summary"
End Sub
2- poi con questa macro portiamo su Summary, da A2 in giu’, tutti i dati raccolti sui fogli Tn:
Codice: Seleziona tutto
Sub Summa()
Sheets("Summary").Select
'Cells.Select   ' <<<< SCOMMENTARE se si vuole prima
'Selection.Clear  '<< ... AZZERARE il foglio Summary

TCount = ActiveWorkbook.Worksheets.Count
Sheets("t0").Select
For I = 1 To TCount - 1
Sheets(I).Select
Range("AA1:DV1").Copy
Sheets("Summary").Select
Range("A65536").End(xlUp).offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Application.CutCopyMode = False
Next I

End Sub
(scommentare se utile le prime 2 righe)

In questo modo avrai N righe con tutti i dati raccolti sui vari fogli; che cosa rappresentano questi dati non lo so, quindi non so che grafico potrebbe essere utile preparare.
Se si tratta di 88 serie di dati (in verticale), rappresentarle sullo stesso grafico sara’ problematico (a parte il fatto che guardando quello che c’ e’ sul tuo MODELLO_prova_etc_etc mi sembra che abbiano tutte lo stesso andamento, quindi forse non ha senso rappresentarle tutte).
Se invece si tratta di 6 serie (sempre nel MODELLO_etc_etc) di dati orizzontali, allora il problema potrebbe essere l’ ampia gamma di dati (numeri molto piccoli e numeri molto piu’ grandi); potrebbe quindi essere utile usare una scala logaritmica (seleziona asse Y, tasto dx, Formato asse, tab Scala).

Sulle modalita’ con cui si creano grafici in excel, ti serve aiuto o sei abbastanza esperto?

Altre cose in modo casuale:
-per la formula =SOFF(A1,-1) vs =SOFF(A1;-1), e' un errore che mi capita spesso in quanto sul mio PC il separatore di attributi e' la "virgola" mentre lo std e' "punto-e-virgola" (e' un settaggio voluto...); e non sempre mi ricordo di correggere quando posto.

-le macro e le funzioni le scrivi nei Moduli; sul codice di Foglio o di ThisWorkbook ci metti solo le macro legate a eventi di foglio o di workbook (es. SelectionChange, Calculate, Open, etc etc).


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

Postdi gik » 13/09/06 08:35

Grazie mille:)

Per quanto riguarda i grafici, vorrei creare un unico grafico delle singole tabelle che mostri come variano i valori nel tempo.

http://gik77.altervista.org/_altervista ... _prova.xls

nel "modello prova" ho creato i fogli tn con un grafico per ciascuna tabella,
vorrei poterli accorpare tutti sovrapponendoli in qualche modo per creare una sorta di grafico animato che rappresenti tutti i diagrammi uno sull'altro.

Non sono un esperto di grafici, infatti non so se esiste un metodo per modificare in automatico la visualizzazione della scala, per zoomare i dati simili
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Grafici

Postdi By Sal » 13/09/06 15:10

Ciao gik ed antony47, per i grafici, di cui non sono molto esperto, vi proporrei questo sito di Fernando Cinquegrani che secondo me è un mago dei grafici e di soluzioni matematiche.

Guardate Qui è veramente stupitevi

Fatemi sapere Ciao :)
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40

Postdi Anthony47 » 13/09/06 15:40

Grazie By Sal, guardero' il tuo link con interesse.

Nel frattempo ho elaborato qualcosa per gik (e chiunque altro lo voglia vedere); lo scaricate da questo link:
http://rapidshare.de/files/32979177/GIK_MODELLO_prova-v_Anth.xls.html

Commenti e istruzioni sono sullo spreadsheet, nel foglio Note.

Dimmi (gik) se e' utile o va ancora elaborato (magari con l' aiuto di Fernando Cinquegrani).

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

Postdi gik » 13/09/06 17:26

....Che dire.... :eeh:
....assolutamente grandioso, Anth sei un vero maestro, mi prostro ai tuoi piedi strisciando come un vecchio calzettone riempito di caramelle nella notte della befana e trascinato da un bambino goloso.....

:D Grazie mille, ora proverò a cavarmela da solo per generare il vero modello.

Grazie mille By Sal è un sito veramente molto interessante e molto utile ;)
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Grafici

Postdi By Sal » 13/09/06 17:33

Ciao Anthony47, bel lavoro anche la barra di scorrimento, per la tabella dati e la visualizzazione, per non far vedere i dati o spostavi il range, oppure le formattavi come modalità nascosta, in modo che cìerano ma non si vedevano.
Comunque ottimo lavoro, Ciao :)
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40

Postdi Anthony47 » 13/09/06 18:29

gik scrisse:
... mi prostro ai tuoi piedi strisciando come un vecchio calzettone etc etc

Un Utente soddisfatto del forum, direi.

By sal suggeri':
per la tabella dati e la visualizzazione, per non far vedere i dati o spostavi il range etc etc

La realta' e' che non ho capito che dati gik sta' elaborando e rappresentando, quindi quello che ho proposto non puo' che essere un modello, che andra' adattato alle esigenze di gik; insomma non era ancora ora di nascondere le aree di servizio.

Interessante il sito prodomosua...

Ciao a tutti, a presto.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi gik » 14/09/06 10:19

Salute maestri,
...formattavi come modalità nascosta

meglio di no, per il momento ho bisogno di vedere tutto per poter sviluppare il vero modello, quello è solo uno schemino.

Ora il mio problema è rappresentare con una tabella, o con vari fogli, una matrice (array) a tre dimensioni spaziali, più una temporale (che abbiamo già visto per la matrice 2D) e un'altra dimensione con gli attributi di ogni cella dell'array....

Per la matrice 3D potrei usare con un po' di fantasia e di impegno le funzioni usate precedentemente TMAKER e SOFF utilizzando fogli z1, z2, zn anzicché tn
e poi sviluppandole nel tempo con fogli t1z1, t2z1,...,tnz1,...,t1zn,..tnzn,
magari creando 2file excel, uno con i dati iniziali al t0 e un altro con i risultati nei vari tn.

Il problema più complesso è quello di associare ad ogni cella di ogni foglio z1,z2,..zn non solo le condizioni iniziali, ma anche degli attributi, diciamo 4 attributi per ogni cella.

Non dovrebbe essere impossibile affrontando i problemi uno per volta, ma detto così è mostruoso :)

Grazie ancora per tutto, non voglio disturbarvi oltre, proverò a cavarmela da solo.
Il problema è che dovrei associare ad ogni
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Postdi gik » 14/09/06 10:24

...Potrei associare direttamente ad ogni cella di una tabella 2D (tabella delle T0 all'istante t0) un array con tutte le informazioni necessarie, ad esempio la prima posizione dell'array potrebbe contenere la T0, la seconda i K, la terza i RO, ....
e richiamare questi dati nelle formule delle tabelle successive (Tn)...
No, troppo complicato.
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Postdi Anthony47 » 14/09/06 12:49

Ciao gik,
come ho gia' scritto, io non ho capito ancora la tipologia di dati che stai elaborando e le loro peculiarita'.
In questa situazione per me e' difficile seguirti nei bisogni ed essere un minimo propositivo.

Anche perche' io continuo a immaginare una unica struttura di dati analitici, un foglio per visualizzare ed editare in modo comprensibile le informazioni, magari un altro foglio per l' input dei dati.

Insomma, sento il bisogno di capire di cosa si parla per poter continuare a dire qualcosa sull' argomento.

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

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Problema di Matrice 3D ed anche 4D":


Chi c’è in linea

Visitano il forum: Ricky0185 e 39 ospiti