|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Apr 2007
Messaggi: 153
|
[excel] costrutti iterativi
vorrei spere se è possibile creare in excel delle formule che contengono costrutti iterativi di tipo for o while per scorree tutte le celle di una colonna fino alla invalidazione della guardia e poter effettuare controlli con funzioni tipo "SE" sui valori delle celle. Praticamente intendo dire come si fa anche per evitare di fare una sequenza annidiata enorme di SE(x;y;SE(z;g;....))
grazie Ultima modifica di braian : 16-04-2008 alle 10:30. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Magari si può risolvere con una funzione personalizzata in vba.
Puoi specificare meglio cosa vorresti fare? |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Apr 2007
Messaggi: 153
|
In pratica vorrei avere in una cella il risultato di una funzione calcolata in questo modo:
<code> n=0; while(An!=-1) { if(An=Bn) RETURN Bn else if (An=Cn) RETURN Cn else if (An=Dn) RETURN Dn n++; } </code> Devo dire che non conosco assolutamente le macro e VBA. Vi sarei grato se poteste darmi qualche informazione a riguardo: magari un manuale online pref. in italiano di VBA e come funzionano le macro. Vanno registrate? Come si usano? grazie |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Apr 2007
Messaggi: 153
|
up.
Credo di avere capito cosa significhi registrare le macro. Però avrei bisogno di una mano per risolvere il problema espresso nel messaggio precedente. grazie |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Secondo me senza scomodare vba ti basta usare per l'appunto alcuni se annidati direttamente da excel (se si tratta solo di 4 colonne come nel tuo esempio).
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Apr 2007
Messaggi: 153
|
forse non mi hai capito:
vorrei avere in una cella il risultato di quel codice che ho scritto. L'iterazione la vorrei fare sulle righe. Potrei fare molti SE annidiati ma se ho un centinaio di righe ti assicuro che è un pò scomodo. Comunque ti ringrazio davvero e se puoi ti chiedo di darmi ancora una mano. ![]() |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
io ho capito che hai una tabella e se un determinato valore è uguale ad AN deve restituirti quel valore? ho capito bene? e non ti basta fare un VLOOKUP col valore AN e restituirtelo se lo trova?
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() Un metodo c'è eccome in VBA, semplicemente forzando l'uscita dal ciclo quando la condizione che cerchi viene verificata. Questo ti evita di creare una pletora di If / Else If nidificati... Quello che hai scritto, suppongo C#, può essere tradotto in VBA così : Codice:
Public Function NOME_FUNZIONE() As String 'Dim An... 'Dim Bn... '... 'DIm Nn... Dim n As Integer n = 0 Do If An = -1 Then Exit Do If An = Bn Then NOME_FUNZIONE = Bn Exit Do End If 'If... '... '... n = n + 1 Loop End Function Se invece, come penso, vuoi un codice compatto che faccia il lavoro su ogni colonna in automatico, cerca magari di essere un po' più preciso sulle specifiche e vedrò che si può fare... ![]() |
|
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Apr 2007
Messaggi: 153
|
Grazie a tutti dell' aiuto. Ho risolto praticamente con una vlookup che in italiano è la funzione cercavert( ). Non ero al corrente dell' esistenza di questa funzione. Praticamente ciclo sui valori di una colonna con la cercavert per cercare un valore specifico. Grazie davvero a tutti per l'aiuto e scusate se rispondo solo ora su richiesta. Cercheròm di fare meglio!!
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:47.