istruzioni

Informatica per la Finanza
28/02/2014
Informatica per la Finanza
5
Array
Cicli iterativi
Contenuto di cella
28/02/2014
Copyright 2005-2013 © V. Moriggia
28/02/2014
1
7.2
ARRAY
V. Moriggia
1
Informatica per la Finanza
28/02/2014
28/02/2014
5.3
Esercizio
Trovare il maggiore tra 3 numeri
Trovare il maggiore tra 4 numeri
Trovare il maggiore tra 10 numeri
28/02/2014
5.4
Array
Collezione di dati omogenei identificata
da un nome
Array a 1 dimensione: vettore
Array a 2 dimensioni: matrice
Array a più dimensioni
V. Moriggia
2
Informatica per la Finanza
28/02/2014
28/02/2014
5.5
Array
Dichiarazione:
Dim nome (dimensione)
Ad es.:
Dim a(10)
Impiego: nome (indice)
Ad es.:
a(2) = 35
28/02/2014
5.6
Scorrimento di una zona
Utilizzando l’istruzione range:
Range("A1")
Range("A2")
devo costruire la stringa contenente
l’indirizzo: "A1" e "A2"
"A" & k
in alcuni casi servirà la funzione str()
V. Moriggia
3
Informatica per la Finanza
28/02/2014
28/02/2014
7.7
CICLI ITERATIVI
28/02/2014
7.8
Cicli iterativi
For contatore=inizio To fine
istruzioni
next
While (condizione)
istruzioni
Wend
Loop (confronta la guida in linea)
V. Moriggia
4
Informatica per la Finanza
28/02/2014
28/02/2014
7.9
Ciclo For
For contatore = inizio To fine
[Step
passo]
istruzioni
Next
[contatore]
Esempio:
Con il VBA, inserire dalla cella A1 alla cella
A10 i valori di ei con i che va da 1 a 10
For
FOR
CONTA:=INIZIO
CONTA
<=
FINE
F
V
.....
.....
.....
CONTA:=
CONTA+1
V. Moriggia
5
Informatica per la Finanza
28/02/2014
FOR
While
CONTA
<=
FINE
F
V
.....
.....
.....
28/02/2014
7.12
Ciclo While
While (condizione)
istruzioni
Wend
Esempio:
Sommare tutti i valori precedentemente
inseriti nella prima riga, partendo dalla cella
A1 e fermandosi quando il totale supera 1000
V. Moriggia
6
Informatica per la Finanza
28/02/2014
28/02/2014
7.13
Quale ciclo iterativo usare?
Tutte le volte in cui un indice deve scorrere
da un inizio a una fine: i  1,...,n
For i=1 To n
Tutte le volte in cui un indice deve scorrere
sotto una certa condizione: i (a  b)  
While ((a-b) < eps)
Esercizio
Sommare tutti i numeri contenuti nella
colonna A fino al numero -1 (escluso)
Calcolare la media dei numeri contenuti
nella colonna A (fino alla prima cella
vuota) che hanno la parte intera PARI
V. Moriggia
7
Informatica per la Finanza
28/02/2014
28/02/2014
8.15
Ciclo Do Loop
Do While (condizione)
istruzioni
Loop
oppure
Do
istruzioni
Loop While (condizione)
FOR
Do … Loop While
.....
.....
.....
V
CONTA
<=
FINE
F
V. Moriggia
8
Informatica per la Finanza
28/02/2014
28/02/2014
8.17
Tutto sul Do Loop
Do [{While | Until}
condizione]
[istruzioni]
[Exit Do]
[istruzioni]
Loop
Do
[istruzioni]
[Exit Do]
[istruzioni]
Loop [{While |
Until} condizione]
28/02/2014
8.18
Istruzione Exit per l’uscita da un ciclo
For contatore = inizio To fine
istruzioni
if (condizione) Then Exit For
istruzioni
Next
Do While (condizione)
istruzioni
if (condizione) Then Exit Do
istruzioni
Loop
Do
istruzioni
if (condizione) Then Exit Do
istruzioni
Loop
V. Moriggia
9
Informatica per la Finanza
28/02/2014
28/02/2014
8.19
Esempio
k=1
x=Range("A" & k).value
While x <> -1
s=s+x
k=k+1
x=Range("A" & k).value
Wend
k=1
Do
x=Range("A" & k).value
If x <> -1 Then _
Exit Do
s=s+x
k=k+1
Loop
28/02/2014
7.20
SCORRIMENTO DI CELLE
V. Moriggia
10
Informatica per la Finanza
28/02/2014
28/02/2014
7.21
Scorrere le celle attraverso
l’operatore &
Dim s As String
…
s = "A" & i
Range(s).Value = …
i "A"&i
1
2
3
4
A1
A2
A3
A4
28/02/2014
5.22
Attributi di Range
Che numero ha la colonna HZ?
Debug.Print
Debug.Print
Debug.Print
Debug.Print
V. Moriggia
Range("HZ1").Address
Range("HZ1").Value
Range("HZ1").Formula
Range("HZ1").Column
$HZ$1
abc
=HY1
234
11
Informatica per la Finanza
28/02/2014
28/02/2014
7.23
Cells
In alternativa a
Range(stringa).Value = …
possiamo utilizzare l’oggetto
Cells(riga, colonna).Value = …
dove riga e colonna sono due valori
INTERI
28/02/2014
5.24
Esercizio
Data una matrice (tabella) di numeri in
Excel, creare una macro che colori di
blu (e grassetto) il valore maggiore e di
rosso (e grassetto) il valore minore. Il
primo dato si trova in cella B2 e gli
estremi della matrice sono attorniati da
celle vuote.
V. Moriggia
12
Informatica per la Finanza
28/02/2014
28/02/2014
7.25
Range e Cells
Avendo degli indici che scorrono su una
ZONA (anziché sulla singola cella) si può
utilizzare
Range(Cells(1,1),Cells(5,2)).Value = …
che equivale a
Range("A1:B5").Value = …
ma è dinamico
28/02/2014
5.26
Lettura di una zona
Con il comando Range è possibile
caricare un’intera zona:
X = Range("A1:B5").Value
X = Range("elencodati").Value
For k = LBound(x) To UBound(x)
V. Moriggia
13
Informatica per la Finanza
28/02/2014
28/02/2014
7.27
Esempi
Sommare tutti i valori precedentemente
inseriti nella colonna A, partendo dalla cella
A1 e fermandosi quando la somma diventa
maggiore di 1000
Contare i numeri pari contenuti nella colonna
A. L’elenco termina con -1
Scrivere una subroutine che calcoli la media
dei numeri maggiori di 500 contenuti nella
colonna A, sapendo che contiene 70 dati.
Se non conoscessimo a priori quanti numeri
contiene la colonna A?
28/02/2014
7.28
Esempi
Scrivere una subroutine che calcoli i primi 3
momenti dei numeri contenuti nella colonna
A, sapendo che contiene 70 dati.
Se non conoscessimo a priori quanti numeri
contiene la colonna A?
V. Moriggia
14