macro in vba con ricerca di valori e risultati diversi

Anonimo
2022-12-08T13:04:22+00:00

Ciao a tutti,

ho studiato visual basic tanti anni fa e adesso ricordo ben poco del linguaggio..

Vorrei creare in excell una macro con diversi SE..

La formula originaria sarebbe:

e1= SE (a1= "runner"; 5- c2; SE ( a1= "tovaglia"; 3- c2; SE ( a1= "strofinaccio"; 10 - c2 )))

questa stessa formula la devo effettuare poi in tutta la colonna E, prendendo in considerazione i valori della riga corrispondente.

Come posso fare?

grazie a chi risponderà

Microsoft 365 e Office | Excel | Per il lavoro | Android

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Gianfranco55 25,270 Punti di reputazione Moderatore volontario
2022-12-08T20:20:25+00:00

ciao

Norman

non ti arrabbiare ma cosa ne dici di questa

https://www.dropbox.com/s/2nho91mqa4zrmxg/select%20case.xlsm?dl=0

Option Explicit 

Option Compare Text 

 Sub Ccalcola() 

Dim lista As Range 

Dim cl As Range 

   Set lista = Range(Cells(1, 1), Cells(1, 1).End(xlDown)) 

For Each cl In lista 

    Select Case cl 

Case "Davide" 

   cl.Offset(0, 4) = 3 - cl.Offset(1, 2).Value 

Case "Pluto" 

   cl.Offset(0, 4) = 5 - cl.Offset(1, 2).Value 

Case "Elio" 

   cl.Offset(0, 4) = 10 - cl.Offset(1, 2).Value 

Case "Strofinaccio" 

   cl.Offset(0, 4) = 13 - cl.Offset(1, 2).Value 

Case "pincopallo" 

   cl.Offset(0, 4) = 15 - cl.Offset(1, 2).Value 

End Select 

Next 

End Sub

poi basta aggiungere

Case "pincopallo"

cl.Offset(0, 4) = 15 - cl.Offset(1, 2).Value

con i nomi e la cifra da utilizzare per la sottrazione

ho usato il tuo file e il tuo pulsante😀 sono uno sfaticato

sempliciotto come codice ma funziona

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-12-09T10:16:16+00:00

    grandissimo, funziona ed è anche semplice da capire per aggiungere gli altri casi che mi interessano

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-12-09T07:58:16+00:00

    Ciao Gianfranco,

    ciao

    Norman

    non ti arrabbiare ma cosa ne dici di questa

    https://www.dropbox.com/s/2nho91mqa4zrmxg/select%20case.xlsm?dl=0

    Option Explicit 
    
    
    
    Option Compare Text 
    
    
    
     Sub Ccalcola() 
    
    
    
    Dim lista As Range 
    
    
    
    Dim cl As Range 
    
    
    
       Set lista = Range(Cells(1, 1), Cells(1, 1).End(xlDown)) 
    
    
    
    For Each cl In lista 
    
    
    
        Select Case cl 
    
    
    
    Case "Davide" 
    
    
    
       cl.Offset(0, 4) = 3 - cl.Offset(1, 2).Value 
    
    
    
    Case "Pluto" 
    
    
    
       cl.Offset(0, 4) = 5 - cl.Offset(1, 2).Value 
    
    
    
    Case "Elio" 
    
    
    
       cl.Offset(0, 4) = 10 - cl.Offset(1, 2).Value 
    
    
    
    Case "Strofinaccio" 
    
    
    
       cl.Offset(0, 4) = 13 - cl.Offset(1, 2).Value 
    
    
    
    Case "pincopallo" 
    
    
    
       cl.Offset(0, 4) = 15 - cl.Offset(1, 2).Value 
    
    
    
    End Select 
    
    
    
    Next 
    
    
    
    End Sub
    

    poi basta aggiungere

    Case "pincopallo"

    cl.Offset(0, 4) = 15 - cl.Offset(1, 2).Value

    con i nomi e la cifra da utilizzare per la sottrazione

    ho usato il tuo file e il tuo pulsante😀 sono uno sfaticato

    sempliciotto come codice ma funziona

    Perché dovrei arrabbiarmi? Dal mio punto di vista, più spesso ti vedrò attivo nel mondo VBA, più sarò felice! 😁

    Il tuo approccio al codice va bene e, in effetti, potrebbe essere più facilmente suscettibile di modifiche per una terza parte. Come avrai notato in precedenza, non sono affatto contrario all'utilizzo della struttura Case di VBA e, qui, hai fornito un ottimo esempio.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-12-08T16:19:29+00:00

    Ciao Desirée,

    In realtà così mi da errore nella prima parte quando scrivi rng.formula2r1c1

    Il codice funziona a me senza alcun problema.

    Quale messaggio di errore riscontri?

    Hai provato il mio file prova?

    Prova a caricare il tuo file problematico, privo di dati sensibili, e fornisci l'indirizzo di un intervallo che, una volta selezionato, riprodurrà il tuo errore.

    Per caricare il file su Microsoft OneDrive, vedi:

       Condividere file e cartelle di OneDrive

    Per caricare il file su DropBox, vedi:

    Come faccio a condividere file e cartelle in Dropbox?

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2022-12-08T16:11:52+00:00

    Ciao a tutti,

    ho studiato visual basic tanti anni fa e adesso ricordo ben poco del linguaggio..

    Vorrei creare in excell una macro con diversi SE..

    La formula originaria sarebbe:

    e1= SE (a1= "runner"; 5- c2; SE ( a1= "tovaglia"; 3- c2; SE ( a1= "strofinaccio"; 10 - c2 )))

    questa stessa formula la devo effettuare poi in tutta la colonna E, prendendo in considerazione i valori della riga corrispondente.

    Come posso fare?

    grazie a chi risponderà

    Se l'intento è semplificare la vita ai tuoi colleghi ti sconsiglierei una macro che avreste difficoltà a gestire.

    In un foglio (es. Foglio2) crea questa tabella:

    che se hai dimestichezza puoi anche nominarla e richiamarla come intervallo definito, ma senza complicarci ulteriormente la vita, in E1 del tuo foglio inserisci:

    =SE.ERRORE(CERCA.VERT(A1;Foglio2!$A$1:$B$3;2;FALSO)-C2;"dato non trovato")

    quando ne avrai bisogno potrai sostituire la corrispondenza numerica o aggiungere/modificare gli elementi. se si inserisce un elemento in A1 non previsto nella tabella, questa va in errore e mostra dato non trovato.

    Se non è chiaro chiedi,

    ciao.

    La risposta è stata utile?

    0 commenti Nessun commento