Condividi:        

EXCEL Copiare celle di un intervallo dinamico

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 Copiare celle di un intervallo dinamico

Postdi ste155 » 14/03/22 13:10

Buongiorno a tutti,

avrei bisogno del vostro aiuto per il seguente quesito:
Sto cercando di creare una tabella (composta da 3 righe e un unica colonna) che riporti e si aggiorni automaticamente con le ultime 3 righe di un altra colonna in cui è presente un elenco dinamico composto da X righe.

Con la funzione =CERCA(A:A; intervallo) sono in grado di riportarmi solamente l'ultima cella dell'intervallo dinamico, ma non la penultima e la terzultima.
Ringrazio anticipatamente per l'aiuto
ste155
Newbie
 
Post: 1
Iscritto il: 14/03/22 13:02

Sponsor
 

Re: EXCEL Copiare celle di un intervallo dinamico

Postdi Anthony47 » 14/03/22 18:49

Innanzitutto "Benvenuto nel forum"

Quanto al problema posto, non puoi risolverlo solo con formule, perche' ovviamente esse riporterebbero solo l'ultima situazione della tabella dinamica.

Possiamo farla con una macro; ad esempio:
Codice: Seleziona tutto
Sub AggiornaA()
Dim myTab As Range, DynaTab As Range
Dim CopyFrom As Long
'
'Impostazioni:
Set myTab = Sheets("Foglio1").Range("B1")       '<<< L'inizio della tabella in cui incollare
Set DynaTab = Sheets("Foglio2").Range("M2")     '<<< L'inizio dei dati dinamici da cui copiare
'
'Determina cosa copiare:
CopyFrom = DynaTab.Offset(10000, 0).End(xlUp).Row - DynaTab.Cells(1, 1).Row - 2
If CopyFrom < 0 Then CopyFrom = 0
'Copia:
DynaTab.Offset(CopyFrom, 0).Resize(3, 1).Copy _
  Destination:=myTab.Offset(10000, 0).End(xlUp).Offset(1, 0)
Application.CutCopyMode = False
End Sub


Il codice va messo in un "Modulo standard" del progetto Vba del tuo file di lavoro.
Per questo, partendo da Excel:
-tasto dx sul tab col nome di un foglio di lavoro; scegli Visualizza codice
-si e' aperto l'ambiente macro; Menu /Inserisci /Modulo per inserire un modulo standard
-copia il codice e incollalo nel frame di destra del modulo appena generato

Le righe marcate <<< vanno adattate al tuo caso. In particolare DynaTab deve puntare all'inizio dei dati della tabella dinamica, escludendo quindi l'eventuale intestazione.

All'occorrenza avvierai la Sub AggiornaA
Puoi facilitare l'avvio di questa sub con un pulsante o altra automazione, come suggerito qui: viewtopic.php?f=26&t=103893&p=647678#p647678

Se spieghi con quale meccanismo si aggiorna la tabella dinamica non escludo che si possa avviare la Sub AggiornaA contemporaneamente.

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: EXCEL Copiare celle di un intervallo dinamico

Postdi wallace&gromit » 15/03/22 09:25

Ciao, chi non muore si rivede... è un po' che non scrivo ma ogni tanto passo a dare un'occhiata.
Oggi ho visto questo post e mi sono chiesto dove sbaglio, se la mia soluzione è così semplice e Anthony ne trova una così complessa.
La posto lo stesso, ditemi dove sbaglio:
Codice: Seleziona tutto
=INDIRETTO(INDIRIZZO(CONTA.VALORI(A:A)-2;1))

mi dà il valore della terzultima riga della colonna A (con -1 la penultima e senza sottrazioni l'ultima), non è quello che si cerca?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: EXCEL Copiare celle di un intervallo dinamico

Postdi Anthony47 » 15/03/22 12:35

W&G ha scritto:Ciao, chi non muore si rivede...
Mi hai tolto le parole di bocca :lol: :lol:

ste155 ha scritto:Sto cercando di creare una tabella (composta da 3 righe e un unica colonna) che riporti e si aggiorni automaticamente con le ultime 3 righe di un altra colonna in cui è presente un elenco dinamico composto da X righe

Avevo interpretato che l'utente voleva storicizzare in un'altra tabella gli ultimi tre valori di una tabella dinamica; e in questo caso una formula non sarebbe stata idonea.

Rileggendo la richiesta invece e' molto probabile che abbia ragione tu, e l'utente voglia solo visualizzare in altra posizione le ultime tre righe della tabella dinamica.
In questo caso la tua formula, in linea di massima funzionera' bene.

Bisognerebbe solo prevedere che la tabella sorgente abbia un header (da non includere nell'area restituita) e che possano esserci meno di 3 dati in tabella per non avere celle in errore.
In questi casi, comunque, la mia preferenza va alla funzione SCARTO.
Esempio:
Codice: Seleziona tutto
=SCARTO($A$2;MAX(0;CONTA.VALORI($A$2:$A$1000)-3);0;3;1)

Va introdotta come formula a matrice nelle tre celle in cui si vuole il risultato:
-selezionare le celle, inserire la formula nella barra della formula, confermare con Contr-Maiusc-Enter
(ipotesi: i dati cominciano in A2, in A1 ci sta una eventuale intestazione)

Se l'utente usasse Office 365 sarebbe possibile qualche semplificazione

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


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL Copiare celle di un intervallo dinamico":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti