scelta condizionata fornita per liste
Hai un problema con Excel?
scelta condizionata fornita per liste
di energysim (utente non iscritto) data: 08/05/2017 10:45:56
buongiorno a tutti.
voglio assegnare ad x un valore che dipende dal valore di Pdis. Pedestremente l'ho fatto come nel codice sotto.
Io però ricordo che nel fortran di buona memoria esisteva la possibilità di dare due vettori , tipo (non prendete la sintassi alla lettera, non la ricordo con precisione, era 20 anni fa... ma credo si capisca cosa intendo):
if pdis (1,2,3) then x=(13,18,22)
c'è qualcosa di simile in VBA?grazie fin d'ora
If Pdis = 1 Then
x = 13
ElseIf Pdis = 2 Then
x = 18
ElseIf Pdis = 3 Then
x = 22
End If |
di Nick (utente non iscritto) data: 08/05/2017 11:19:12
Ti può essere utile questo esempio da adattare
Option Base 1
Dim vec As Variant
Dim x As Integer
Dim pdis As Integer
x = Array(13, 18, 22)
pdis = 1
x = vec(i) |
di Nick (utente non iscritto) data: 08/05/2017 11:20:12
Scusa ... ovviamente è
vec = Array(13, 18, 22)
di patel data: 08/05/2017 13:02:26
lo puoi fare anche senza scomodare il VBA, prepari 2 colonne con i valori da associare e poi usi la funzione Cerca.Vert
array ci siamo quasi
di energysim (utente non iscritto) data: 08/05/2017 16:38:57
grazie per le risposte.
@nick: sì, l'array è un avvicinamento, ma ancora manca qualcosa, perchè in effetti non ho inserito un esempio abbastanza generale: immagina che i valori di Pdis non siano 1,2,3, ma tre numeri a caso, anzi addirittura immaginiamo siano valori stringa, come "giovanni", "giacomo", "filippo".
Quindi magari non tanti (qui sono tre, ma metti non più di 5 o 6, perciò comodamente inseribili in una lista tra parentesi), ma senza nessuna possibilità di vederci dentro qualche progressione.
quindi sarebbe l'ideale ci fosse qualcosa come if ("giacomo", "giovanni", "filippo") then (13,18,22)
@patel: non vorrei scrivere una tabella sul foglio, seppur semplice. Ad esempio i valori di Pdis possono essere stati assegnati tramite la lettura da un box. Tieni presenti che è un codice ormai piuttosto voluminoso e che questo caso su cui vi chiedo si presenta in parecchi punti, le tabelline cacciate in un foglio di servizio farei fatica a ricordare dove sono, mentre due liste corrispondenti nel codice mi sono molto più visibili
di Nick (utente non iscritto) data: 08/05/2017 17:00:00
Se le specifiche cambiano ad ogni post, non ne usciamo più ... devi essere chiaro sin dall'inizio ...
A questo punto, vedo un paio di soluzioni ... la "semplice" ... usi un Select Case (vedi codice alla fine) oppure usi un Dictionary, per i dettagli vedi
h t t p s: //excelmacromastery.com/vba-dictionary/
Select Case Pdis
Case "giacomo"
x = 13
Case "giovanni"
x = 18
Case "filippo"
x = 22
End Select |
select case OK
di energysim (utente non iscritto) data: 08/05/2017 17:20:52
In effetti mettendo 1,2,3 come possibili valori avevo suggerito un'inferenza che non c'è.
Direi che il "select case" va bene, è leggibile e più compatto degli if.
Grazie!
saluti
Vuoi Approfondire?