Condividi:        

[excell] Estrarre dati da un foglio

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

[excell] Estrarre dati da un foglio

Postdi Ale.P. » 30/08/07 14:16

Ciao, ho un problema con excell.

Attualmente ho realizzato un foglio excell dove nella prima pagina imposto dei dati, (ad esempioTesto, Numero e Coefficiente) e nella seconda pagina sono presenti delle tabelle origine.

Il risultato che vorrei ottenere è un foglio word (oppure excell) dove venga riportato oltre al Testo, una tabella, scelta tra quelle di origine (nella seconda pagina) in base al Numero e che abbia la stessa struttura della tabella origine ma con una colonna in più, i cui coefficienti siano quelli dell’ultima colonna della tabella d’origine, moltiplicati per Coefficiente.

Ovviamente mi sono arenato. Pensavo di poter fare un pulsante e associre una macro, ma non trovo inidcazioni.

Potete aiutarmi ?

Ps. Non sono molto esperto.

Grazie. !!!
Ale.P.
Utente Junior
 
Post: 22
Iscritto il: 30/08/07 13:58

Sponsor
 

Postdi Anthony47 » 30/08/07 22:54

Ciao Ale e benvenuto nel forum.

Scusa ma io mi sono arenato ancora prima, a cercare di capire il problema...

Il problema di fondo e' quindi selezionare in funzione del "Numero" impostato su foglio1 una delle tabelle di foglio2 e portarla su un foglio3, manipolandone i contenuti secondo il "Coefficiente" di foglio1? (o portarla su foglio1?).

Le tabelle di origine (foglio2) hanno tutte le stessa struttura, e quale e'? hanno una posizione preordinata e prevedibile? quale e' la regola da seguire per cui dato un Numero si sceglie una certa tabella? E sono tabelle gia' pronte o importate da altro programma, oppure vengono scritte da te?
Non so se con queste risposte potro' darti un contributo, ci provo.

Ciao, ti aspetto.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

[excell] Estrarre dati da un foglio

Postdi Ale.P. » 31/08/07 09:13

Ciao Anthony,

Il problema lo hai centrato,

"Il problema di fondo e' quindi selezionare in funzione del "Numero" impostato su foglio1 una delle tabelle di foglio2 e portarla su un foglio3, manipolandone i contenuti secondo il "Coefficiente" di foglio1"

vorrei che le nuove tabelle fossero su un foglio a parte, o meglio su un documento a parte (word o excell)

in merito alle tue domande:
1) le tabelle origine hanno tutte la stessa struttura (es 10 righe e 2 colonne)
2) hanno una posizione preordinata e prevedibile (sono impostate per iniziare dalla colonna B ogni 50 righe)
3) la regola da seguire è che si seleziona la tabella che inizia al rigo definito da = NUMERO*50
4) le tabelle sono gia pronte e fatte da me.


grazie mille !!

ciao,
Alessandro
Ale.P.
Utente Junior
 
Post: 22
Iscritto il: 30/08/07 13:58

Postdi Anthony47 » 31/08/07 23:59

Ti propongo da sperimentare questa soluzione basata sulla funzione SCARTO (vedi help on line per la descrizione), seguendo questo filo:

Ti generi il file di output, e su questo file posizioni una copia del testo nelle celle che vuoi usando semplicemente "=" con riferimento alle celle del primo file (scrivi "=", senza virgolette, vai sul primo file e sul foglio giusto, selezioni la cella in cui hai scritto il testo, confermi con Enter)

Sempre sul file di output ti fai "a mente" il layout di una tabella come quelle di "Origine", posizionandola dove ti serve ma senza inserire la colonna in piu' che ti serve; questa come le rifiniture della tabella (bordi, colori, altri formati) la metteremo alla fine.

Adesso supponiamo che il file di partenza si chiami PRIMO.XLS; il primo foglio (quello con Testo, Numero e Coefficiente) si chiami Foglio1 e su questo Numero sia in A5 e Coefficiente in A6; il foglio con le N tabelle si chiami Foglio2, e che la prima tabella parta in B1, la seconda a B51, etc.

A questo punto vai sul secondo file, nella prima cella della tabella che hai abbozzata, e usa questa formula:
Codice: Seleziona tutto
=SCARTO([PRIMO.xls]Foglio2!B1;([PRIMO.xls]Foglio1!$A$5-1)*50;0)*[PRIMO.xls]Foglio1!$A$6

Copia questa formula e incollala nelle colonne adiacenti per la larghezza della tabella.
Per questa operazione: seleziona la cella con la prima formula, Contr-c per copiare, seleziona le altre celle adiacenti, Enter per incollare.

Poi copia tutte le formule della prima riga e incollale nelle righe sottostanti, per l' altezza della tabella: seleziona le celle di riga 1, Contr-c, seleziona le celle sottostanti (basta selezionare solo la colonna di sx), Enter.
In questo modo dovresti vedere la tabella prescelta formarsi nel foglio di uscita.
Inserisci la colonna aggiuntiva sulla tabella usando il comando Menu /Inserisci /Colonna.
Formatta ta tabella e completa il foglio.

IN QUESTO MODO, PERO', tutte le volte che apri questo file e PRIMO.xls e' (o viene) aperto, il file si aggiorna secondo i valori correnti di testo, numero e coefficiente. Se questo e' un problema allora si potrebbe inserire una macro che "congela" i dati sul foglio di uscita; ma a quel punto, macro per macro, tanto vale che buttiamo questa proposta e basiamo tutto su una unica macro che copia prima il testo e poi la tabella dal primo file sul secondo; ma per questo mi dovrai dire il formato piu' preciso delle tabelle e dove vuoi posizionare la colonna aggiuntiva nella tabella.

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

[excell] Estrarre dati da un foglio

Postdi Ale.P. » 03/09/07 10:41

Grazie della risposta, ma preferirei adottare una soluzione con una macro, in modo da associarla ad un pulsante e rendere I files indipendenti.

Per il formato delle tabelle non è un problema, a me interessa capire come poter usare e creare la Macro.

Ad ogni modo, nel caso reale ho delle tabelle formate da 10 righe per 4 colonne,
Le colonne sono denominate CODICE, TIPO1, TIPO2, TIPO3.
L’output che vorrei è una tabella di 10 righe per 3 colonne dove la prima colonna è CODICE, la seconda è una delle tre contenenti i TIPO e la terza colonna è uguale alla seconda colonna*Coefficente.

Avevo pensato anche ad aggiungere al file originale (PRIMO) una terza pagina, con delle tabelle vuote preimpostate, in modo da farle compilare in automatico, e una volta compilate, tramite una macro, esportare le tabelle di pagina 3, però al solito, non so come esporate le tabelle da excell a word (o ad un altro file di excell).


Cosa ne pensi ? Secondo te quel’è la soluzione migliore ?

Grazie 1000.
Ale.P.
Utente Junior
 
Post: 22
Iscritto il: 30/08/07 13:58

Postdi Anthony47 » 05/09/07 00:06

Non mi sono ancora chiari tutti i termini del problema, per cui vado a tentoni.

Fatti il file PRIMO.xls e un altro file che chiami MODELLOX.xls.
Sul file PRIMO, seleziona la cella in cui metterai il numero di tabella e assegnagli il nome “numeroT”: seleziona la cella, Menu /Inserisci /Nome /Definisci; scrivi NumeroT nell’ area superiore e chiudi con Ok.
Poi parti dal file Modellox su un foglio “sbagliato” (vedi oltre) e procedi registrando una macro mentre fai esattamente le cose descritte: vai su file PRIMO, selezioni il foglio con le tabelle (allo scopo, prima di partire con la registrazione posizionati sul foglio sbagliato), selezioni tutte le celle della prima colonna, copi questa area, vai sul file Modello, selezioni il foglio corretto, selezioni la prima cella su cui vuoi incollare il dato, fai Modifica /Incolla Speciale /Valori/Ok, ripeti esattamente per le altre colonne da copiare (compresa quella che deve essere moltiplicata, ma la moltiplicazione la faremo tra un attimo); continua a registrare mentre: vai sul file PRIMO, selezioni la cella col Coefficiente, copi, vai sul file Modello, selezioni la colonna da moltiplicare, fai Modifica /Incolla Speciale /Valori, ma qui spunti anche Moltiplica, Ok.
Completa la macro con la copia del testo da PRIMO a Modello, usando sempre la tecnica del Modifica /Incolla Speciale /Valori/Ok.
Quando hai finito ferma la registrazione, o tramite l’ apposito pulsante che sara’ comparso, oppure tramite Strumenti /Macro /Interrompi registrazione.

A questo punto apri il vba editor con Alt-F11 e trova il Modulox (probabilmente Modulo1) su cui e’ stata registrata la tua macro. Non dovrebbe essere difficile seguire le istruzioni create associandole ai vari step; localizza quelle dove viene selezionata la colonna da copiare, ad esempio sara’ una sequenza tipo
Codice: Seleziona tutto
Range("B1:B10").Select
Selection.Copy

Modifica la prima istruzione in
Codice: Seleziona tutto
Range("B1").offset((Range("NumeroT").value - 1)*50,0).range("A1:A10").select


Note:
-B1 e’ deducibile direttamente dall’ istruzione originale
-A1:A10 e’ “l’ altezza” (n° di righe) della tabella; va sempre specificata come inizio A1 mentre come fine si usera’ Ax, dove x sono le righe che l’ istruzione originale selezionava
-Questa modifica dovrebbe essere fatta in 3 istruzioni, e solo “B1” va adeguata all’ istruzione originale mentre il resto rimane costante.

Salva il Modellox con l’ opzione “Consigliata solo lettura”: File /Salva con nome; clicca Strumenti /Opzioni generali, spunta “Consigliata solo lettura”, eventualmente metti una password di scrittura (cosi’ forzi l’ apertura in sola lettura, salvo conoscere la password); completi il salvataggio, chiudi il file e lo riapri (in sola lettura…).
A questo punto prova a impostare dei parametri su PRIMO.xls, lancia la macro e vedi che cosa fa. A lavoro competato salvi il risultato con "Salva con nome" e chiudi.

Ricorda che se vuoi fare delle modifiche al file Modellox (ad esempio per inserire qualche formattazione sul testo e sulla tabella di output) non devi aprirlo in sola lettura.

Buon lavoro, prova e facci sapere!
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[excell] Estrarre dati da un foglio":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti