Author Topic: VBA&Excel -Alcuni trucchi sui nomi  (Read 4733 times)

0 Members and 1 Guest are viewing this topic.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
VBA&Excel -Alcuni trucchi sui nomi
« on: 28 May , 2012, 21:00:27 PM »
Abbiamo visto, seppur con pochi esempi, che la tecnica di attribuire dei nomi a celle o tabelle rende la vita piu facile, semplificando le formule che utilizzano le celle nominate, facilitando l'accesso da codice ai dati contenuti nei fogli e tant'altro non per ultimo la possibilita di poter associare ad un nome una tabella dinamica, cioè le cui dimensioni pososno variare nel corso delle elaborazioni.

Qui voglio illustrare alcuni trucchi legati ai nomi.

NOME DI COSTANTI
Nel caso in cui il nostro foglio è caratterizzato dalla presenza di valori costanti, tipo il pi.greco o .. che so... la lunghezza del raggio delle terra o il numero di Avogadro, possiamo dare un nome che non è associato ad alcuna cella o range del foglio il cui valore è proprio pari alla costante che intendiamo definire.
Vogliamo per esempio definire la costante Avogradro (sappiamo che il numero di Avogadro è pari a 6,022 · 10²³.
Dal menu "inserisci" scegliamo la voce "nome" e poi la voce "definisci".
Appare il dialogo di definizione dei nomi, nello spazio "nomi della cartella di lavoro" digitiamo il nome della costante, quindi Avogadro, e nello spaizo "riferito a" digitiamo =6.022*10^23
Premiamo su aggiungi e quindi su ok
Adesso ovunque si scriva =Avogadro apparira la nostra costante. Chiaramente la costante Avogadro puo anche far parte di una qualsiasi formula.
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Re: VBA&Excel -Alcuni trucchi sui nomi
« Reply #1 on: 28 May , 2012, 21:27:49 PM »
NOMI RELATIVI

Quando attribuiamo un nome ad una cella o ad una tabella, excel pone il riferimento assoluto alla cella o tabella a cui diamo il nome. Cosi per esempio se diamo il nome Afazio alla cella A1, nel dialogo di modifica dei nomi troviamo che il nome Afazio è riferito alla cella =$A$1
Quando da qualche altra parte del foglio digitiamo =afazio o anche come componente di una formula, non facciamo altro che richiamarci il valore contenuto nella cella A1. Questo riferimento non cambia mai.

Esiste la possibilita di dare dei nomi con riferimento relativo.
Esempio: vogliamo dare il nome "duecelleadestraeduesotto" alla cella che rispetto alla cella dove scriviamo si trova, appunto, due celle a destra e due celle sotto e quindi richiamarci il valore in essa contenuto.
Non so a cosa ed in quale occasione puo' essere utile, ma esiste anche questa possibilità ed io ve la descrivo.
Posizioniamoci in una cella qualsiasi, per esempio la cella E2 ed a questa diamo il nome "duecelleadestraeduesotto". Adesso apriamo il dialogo di modifica dei nomi. Vediamo che al nome "duecelleadestraeduesotto" è legata la cella (assoluta) $E$2. MOdifichiamo proprio questo riferimento in =G4 (senza il simboli $- praticamante è proprio la cella che sta a destra e sotto di due celle rispettivamente).
Clik su aggiungi e quindi OK
Adesso se da qualche parte digitiamo =duecelleadestraeduesotto, excel scriveraà in questa cella, ilcontenuto della cella che si trova due celle a destra e due celle sotto.
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Re: VBA&Excel -Alcuni trucchi sui nomi
« Reply #2 on: 28 May , 2012, 21:34:23 PM »
NOMI CON FORMULE

Supponete di avere un foglio di calcolo in cui avete attribuito il nome "q" alla cella che contiene il carico distribuito su una trave, ed il nome "L" alla luce della trave stessa. La trave sia appoggiata appoggiata.
Possiamo dare un nome al momento massimo nella sezione di mezzeria, per esempio "M"
Apriamo il dialogo di definizione dei nomi, diamo un nuovo nome "M" e nella casella "riferito a" digitiamo la formula del momento =q*L^2/8. Click su aggiungi e poi Ok.
Se adesso da qualche parte scriviamo =M ci apparira il valore del massimo momento.

« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Re: VBA&Excel -Alcuni trucchi sui nomi
« Reply #3 on: 28 May , 2012, 22:41:41 PM »

E' ovvio che le tecniche sopra descritte possono anche essere combinate tra loro e quindi posso dare un nome "acaso" che è pari al prodotto di una costante per la somma degli elementi di un range (a cui ho dato un nome) diviso il contenuto di una cella che sta per esempio sotto la cella dove si richiama quel nome. MA non fermatevi con la fantasia, provando potreste scoprire altri trucchi ignoti o poco noti.

NOMI CONDIZIONALI
Altra interessante applicazione della tecnica dei nomi è quella che fa ricorso alla condizione SE(). Praticamente ricorrendo alla condizione SE si attribuisce un definito nome ad una cella (o range) oppure ad altra cella (o range) in base al valore assunto da altra cella (o nome di cella).
Esempio: se la cella A1 contiene il valore "legno" voglio che il range che contiene l'elenco di alcune essenze legnose sia chiamato "lista" altrimenti, se la cella A1 contiene il valore "acciaio" il nome "lista" deve essere attribuito a un elenco di celle che contiene i tipi di acciaio da carpenteria metallica altrimenti ancora, il nome "lista" deve essere attribuito ad un elenco che contiene le classi di CLS.
Poi voglio poter utilizzare il nome "lista" in una cella che accetti come input solo uno dei valori contenuti nel range che ho chiamato lista.
E' piu complicato a descriverlo che non a farlo, pertanto tento di illustravelo con un esempio.

Abbiamo un file vuoto aperto. selezioniamo il secondo foglio riempiamo tre celle consecutive verticali con le parole:
- legno
- acciaio
- Cls
Diamo il nome a questa tabella "Materiali", il tutto come nella figura che segue:


Uploaded with ImageShack.us

Ora collochiamoci nel primo foglio e dedichiamo la cella B2, a cui diamo il nome "Scelta" a contenere un input che sia solo una delle tre voci della tabella "materiali". Per far questo, con la cella B2, selezionata, scegliamo dal menu "dati" la voce "convalida". Dal dialogo di convalida dei dati scegliamo la voce consenti elencoe come origine digitiamo =Materiali



Uploaded with ImageShack.us

Clik su ok. Adesso avremo la cella B2 con la presenza della freccia tipica della tendina a discesa da cui potremo scegliere solo una delle tre voci della lista dei materiali.
Scegliamo per esempio la voce Legno.
Adesso vogliamo che nella cella D2 sia possibile scegliere solo tra le voci di un elenco (che adesso comporremo) contenenti alcune essenze legnose. Se avessimo scelto Acciaio, adesso vorremmo che l'elenco nella casella D2 vari riportando l'elenco dei tipi di acciaio e similmente se avessimo scelto Cls.

Torniamo pertanto nel secondo foglio e componiamo questi tre elenchi senza dare alcun nome.
Dopo aver finito di comporre questi tre elenchi, definiamo un nuovo nome che chiamamiamo "Lista"
Ricorreremo al condizionale Se nel modo seguente:

=Se(scelta="Legno";Foglio2!$D$2:$D$5;se(scelta="Acciaio";Foglio2!$F$2:$F$4;Foglio2!$G$2:$G$4))

con ovvio significato dei due SE nidificati.



Uploaded with ImageShack.us

Adesso non ci resta che tornare nel foglio precedente e legare l'input della cella D2 all'elenco di convalida che abbiamo chiamato "lista"



Uploaded with ImageShack.us

Adesso possiamo provare a cambiare la selezione della cella B2 e vedremo cambiare l'elenco di convalida della cell D2 adattandosi la materiale che abbiamo selezionato



Uploaded with ImageShack.us

Saluti





« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

Offline quattropassi

  • Esperto del forum
  • ***
  • Posts: 226
  • Karma: 49
  • Neo - Laureato
Re: VBA&Excel -Alcuni trucchi sui nomi
« Reply #4 on: 28 May , 2012, 23:48:13 PM »
Grazie. Molto interessante.   :ook:

Magari anche con "indiretto" si può fare qualcosa.


* Se ci scambiamo un dollaro, ognuno rimane con un dollaro.
* Se ci scambiano un'informazione, ognuno rimane con due informazioni.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24