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
© Copyright 2025 ExpyDoc