Funzione se con tre variabili
Hai un problema con Excel? 
Funzione se con tre variabili
di Nicola (utente non iscritto) data: 18/05/2009
Buongiorno a tutti,
volevo sapere se è possibile gestire in una cella tre variabili con la funzione se.
in pratica io ho questo problema: cella a1 ho messo un elenco in cui scelgo tra mele pere e pesche,
se scelgo mele, nella cella b1 devo avere un valore (ricavato da un calcolo in cui uso altre funzioni), se scelgo pere, nella cella b1 devo avere un altro valore ( anche questo ricavato da calcoli e riferimenti ad altre celle), se scelgo pesche, nella cella b1 devo avere un ulteriore diverso valore anche questo ricavato da un calcolo che imposterò nella cella, se non scelgo niente (quindi la cella a1 rimane vuota), la cella b1 deve rimanere vuota.
visto che ogni valore che voglio ottenere nella cella b1 sarà il frutto di calcoli e/o riferimenti a celle e tabelle, ho paura di ritrovarmi con una formula lunghissima e non ho ben capito qual è il limite di lunghezza a cui posso arrivare.
fatto questo devo proteggere il foglio in modo da poter nascondere le formule usate e in modo da consentire la modifica solo alle celle in cui scegliere mele pere o pesche.
qualcuno mi può dare un po’ di dritte?
grazie
di Franco_44 (utente non iscritto) data: 18/05/2009
Ciao
una domanda: i valori da inserire in b1, a seconda di cosa hai in a1, li hai già? puoi provare a mettere in 3 celle divere i 3 calcoli riferiti rispettivamente a mele - pere - pesche e in b1 metti la formula:
=se(a1="mele";100;se(a1="pere";101;se(a1="pesche";102;"")))
al posto di 100, 101, 102 metti il riferimento alle 3 celle
guarda se va bene e poi passiamo al secondo quesito
di Nicola (utente non iscritto) data: 18/05/2009
Grazie, così sono riuscito a risolvere... mi sai dire qualcosa per quanto riguarda la protezione?
di Baz (utente non iscritto) data: 18/05/2009
Ciao,
per proteggere il foglio non devi fare altro che:
selezionare le celle che vuoi possano essere modifcare dai vari utenti, poi su
formato celle -> protezione togli la spunta su bloccata
quindi proteggi il foglio su
strumenti->protezione->proteggi foglio
togliendo la spunta su "seleziona celle bloccate"
in questo modo non dovresti neanche nascondere le celle
rimane sottointeso che le protezioni sono facilmente by-passabili con semplici programmini, ma allo scopo di salvaguardare le formule dei vari file sono la cosa migliore.
ciao
di Nicola (utente non iscritto) data: 18/05/2009
Grazie baz,
esiste in alternativa un modo per proteggere tutto il lavoro in modo che i semplici programmini non possano avere effetto?
di Baz (utente non iscritto) data: 19/05/2009
Ciao nicola,
come potrai notare nella sezione blog -> excel vba -> alla voce "rimuovere la password ..." di riccarco "r" è relativamente facile togliere la pw di protezione.
un piccolo consiglio per aggirare l'ostacolo potrebbe essere quello di mettere le varie formule su vba e proteggere il progetto vba.
ovviamente non si risolve il problema, ma non tutti hanno il prg per sporteggere il codice vba, in questo modo potresti limitare "i furbi"; poi bisognerebbe capire il tuo caso specifico, nel senso di chi dovrebbe riuscire fare o non fare qualcosa.
la soluzionesrebbe quella di usare un programma che si possa compilare, ma non credo sia il caso di excel.
ciao
di Nicola (utente non iscritto) data: 19/05/2009
Ciao baz,
il discorso di proteggere il foglio copiando le formule in vba è interessante. purtroppo non so neanche da dove iniziare, io e il vba non andiamo d'accordo. se con un pò di pazienza qualcuno mi può seguire mi piacerebbe provare.
di Baz (utente non iscritto) data: 19/05/2009
Credo proprio che sei nel posto giusto.
non è poi così difficile, l'ho "imparato" (o meglio lo uso) anch'io...
un buon punto di partenza è il registratore di macro, il quale ti permette di vedere come ragiona vba.
riesci registrare una macro e poi lanciarla?
fai sapere
di Nicola (utente non iscritto) data: 19/05/2009
Ho già usato le macro per altri lavori che ho fatto in passato.
andavo su registra nuova macro e dopo aver dato un nome di riferimento e una funzione rapida (ctrl+…) eseguivo quello che volevo facesse la macro.
non so se è la procedura corretta ma la cosa funzionava.
di Baz (utente non iscritto) data: 19/05/2009
Assolutamente corretto!
puoi anche inserire dei pulsanti che ti attivino la tua macro, senza passare per il tasto a scelta rapida (che si potrebbe dimenticare, parlo x me !)
hai mai provato premere alt+f11 ?
ti si apre l'editor di vba, dal quale puoi modificare e scrivere direttamente il codice.
a sx trovi l'elenco dei file excel aperti con il nome dei relativi fogli
fai tasto dx su uno dei fogli e seleziona la voce inserisci -> modulo
a dx si aprirà una finestra bianca nella quale incolla il codice sottostante.
se lanci la macro:
nella cella a1 ti verrà messa la formula "=a5"
nella cella a2 , invece, direttamente il valore di a5 (senza formula)
spero essere stato abbastanza chiaro
Sub Formula()
Range("a1").Formula = "=A5"
Range("a2") = Range("a5").Value
End Sub
|
di Nicola (utente non iscritto) data: 20/05/2009
Interessante. credi che si possa fare anche qualcosa tipo far aprire una finestra se in una cella metto un determinato valore?
es. cella a1 posso scegliere tra mele pere e ciliege.
se scelgo mele nella cella b1 ho 1€ al kg se scelgo pere nella cella b1 ho 2€ al kg ma se scelgo ciliege(che compro a etti e non a chili)mi si apre una finestra in cui impostare quanti etti ne compro e in base al valore immesso, nella cella b1 avere il prezzo degli etti.
di Baz (utente non iscritto) data: 20/05/2009
Ciao,
metti l'elenco nella cella a1 del tuo foglio (dati-> convalida seleziona elenco e scrivi "mele";"pere";"ciliege" poi ok)
premi poi alt+f11 (si apre l'editor di vba) fia dippio click sul nome del foglio dove hai appena messo la convalida e copia il codice sottostante
mi sono permesso metteree l'unità di misura nella cella c1 per poter avere nella b1 solo numeri per poter effettuare poi dei calcoli che suppongo dovrai fare.
fai sapere
ciao
Private Sub Worksheet_Change(ByVal Target As Range)
Set zona = Application.Intersect(Target, Range("a1"))
If Selection.Address <> ActiveCell.Address Or zona Is Nothing Then Exit Sub
Select Case Range("a1").Value
Case "mele"
Range("b1") = 1
Range("c1") = "€/Kg"
Case "pere"
Range("b1") = 2
Range("c1") = "€/Kg"
Case "ciliege"
hg = InputBox("Imettere gli etti", "Attenzione")
If hg = "" Or Not IsNumeric(hg) Then
MsgBox "Valore non consentito"
Range("a1") = ""
Range("b1") = ""
Range("c1") = ""
GoTo Fine:
End If
Range("b1") = CDbl(Replace(hg, ".", ","))
Range("c1") = "etti"
End Select
Fine:
End Sub
|
di Nicola (utente non iscritto) data: 20/05/2009
Funziona benissimo. faccio un ultima richiesta, ho visto nell'editor vba che posso creare una user form aggiungendo pulsanti e caselle di testo. come faccio a far funzionare tale user form che vado a creare secondo le mie esigienze applicandolo all' esempio fatto prima?
di Baz (utente non iscritto) data: 20/05/2009
Ciao,
ti ho allegato un file di prova, guardalo e valuta se può andarti bene; in realtà è più facile farlo che spiegarlo, lo vedrai tu stesso
ciao
di Nicola (utente non iscritto) data: 21/05/2009
Anche questo file è interessante grazie, lo prenderò come spunto per iniziare a fare qualche prova.
di Baz (utente non iscritto) data: 21/05/2009
Ciao e buon proseguimento
Vuoi Approfondire?