È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Possibile sostituzione delle funzione SE

  • Messaggi
  • OFFLINE
    dartx
    Post: 11
    Registrato il: 16/07/2016
    Città: MILANO
    Età: 31
    Utente Junior
    2013
    00 30/11/2016 11:57
    Ho 4 celle che hanno la stessa funzione circa uguale cambia solo alcune celle di riferimento.
    Questa funzione é di base un SE con 67 variabili, legate ad un elenco e ad una cella con anch'essa 2 variabili.
    Per semplificare metto una versione semplice
    Visto che tale funzione é alquanto grande e se sbaglio qualcosa mando in pappa tutto, é possibile convertire questa funzione in una piu semplice da impostare?

    =se(e(o($B$74=mod!$A$40;$B$74=mod!$A$41);$j$8="piccola");"A";se(e(o($B$74=mod!$A$40;$B$74=mod!$A$41);$j$8="media");"B"))

    le celle $B$74 e $j$8 sono fisse per tutte, le variabili sono mod!$A$[numero] e la loro quantitá come per il risultato A e B
  • OFFLINE
    federico460
    Post: 911
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Senior
    365
    00 30/11/2016 12:08
    ciao
    senza file è difficile

    prova a dare un'occhiata alla formula di Ninai
    in questo post

    Formula Se con molteplici condizioni



    domanda di Di Dio Ivano

    poche righe più sotto alla tua richiesta
  • OFFLINE
    Zer0kelvin
    Post: 747
    Registrato il: 24/04/2004
    Città: TERAMO
    Età: 63
    Utente Senior
    2010
    00 30/11/2016 18:27
    Ciao.
    Non riesco a vedere il post di Ninai, quindi dico la mia.
    Se la formula è davvero complessa come dici, può essere conveniente scrivere una UDF in VBA...
    Ecco una "formulaccia" scritta "a orecchio" a solo titolo di esempio

    Option Explicit
    
    '=se(e(o($B$74=mod!$A$40;$B$74=mod!$A$41);$j$8="piccola");"A";se(e(o($B$74=mod!$A$40;$B$74=mod!$A$41);$j$8="media");"B"))
    
    Public Function RockAndRoll(B74, A40, A41, J8) As Variant
        If ((B74 = A40) Or (B74 = A41)) Then
            If J8 = "piccola" Then
                RockAndRoll = "A"
            ElseIf J8 = "media" Then
                RockAndRoll = "B"
            End If
        End If
    End Function


    naturalmente i nomi di cella nella funzione sono in realtà nomi di variabili (parametri, in questo caso)...
    [Modificato da Zer0kelvin 30/11/2016 18:51]
    __________________________
    [Excel 2010]
    -Condividere la conoscenza aumenta la ricchezza di tutti.
    -Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
    -Il sonno della ragione genera mostri. (Francisco Goya)
  • OFFLINE
    dartx
    Post: 11
    Registrato il: 16/07/2016
    Città: MILANO
    Età: 31
    Utente Junior
    2013
    00 02/12/2016 13:18
    Re:
    Zer0kelvin, 30/11/2016 18.27:

    Ciao.
    Non riesco a vedere il post di Ninai, quindi dico la mia.
    Se la formula è davvero complessa come dici, può essere conveniente scrivere una UDF in VBA...
    Ecco una "formulaccia" scritta "a orecchio" a solo titolo di esempio

    Option Explicit
    
    '=se(e(o($B$74=mod!$A$40;$B$74=mod!$A$41);$j$8="piccola");"A";se(e(o($B$74=mod!$A$40;$B$74=mod!$A$41);$j$8="media");"B"))
    
    Public Function RockAndRoll(B74, A40, A41, J8) As Variant
        If ((B74 = A40) Or (B74 = A41)) Then
            If J8 = "piccola" Then
                RockAndRoll = "A"
            ElseIf J8 = "media" Then
                RockAndRoll = "B"
            End If
        End If
    End Function


    naturalmente i nomi di cella nella funzione sono in realtà nomi di variabili (parametri, in questo caso)...


    visto che ne devo unire 12 sono costretto a fare 12 macro cosi o posso anche unirle in una sola?


  • OFFLINE
    ninai
    Post: 3.570
    Registrato il: 04/07/2012
    Città: BARCELLONA POZZO DI GOTTO
    Età: 61
    Utente Master
    2010
    00 02/12/2016 15:03
    ciao
    dovresti allegare un file rappresentativo della situazione e di quello che vorresti ottenere, al momento non mi è chiaro



    --------------------------------------------------
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
    --------------------------------------------------
    excel 2010 ,
    Win 8
  • OFFLINE
    Zer0kelvin
    Post: 754
    Registrato il: 24/04/2004
    Città: TERAMO
    Età: 63
    Utente Senior
    2010
    00 03/12/2016 17:05

    visto che ne devo unire 12 sono costretto a fare 12 macro cosi o posso anche unirle in una sola?

    Questo dipende dalle tue reali necessità.
    Come già suggerito da Ninai, sarebbe meglio avere a disposizione un file con le varie situazioni possibili e con qualche noticina esplicativa.
    __________________________
    [Excel 2010]
    -Condividere la conoscenza aumenta la ricchezza di tutti.
    -Dai ad un uomo un pesce e lo avrai sfamato per un giorno; insegnagli a pescare e lo avrai sfamato per sempre. (Confucio)
    -Il sonno della ragione genera mostri. (Francisco Goya)
  • OFFLINE
    dartx
    Post: 12
    Registrato il: 16/07/2016
    Città: MILANO
    Età: 31
    Utente Junior
    2013
    00 04/12/2016 14:42
    ecco il file esempio, dovrebbe essere capibile
  • OFFLINE
    dartx
    Post: 13
    Registrato il: 16/07/2016
    Città: MILANO
    Età: 31
    Utente Junior
    2013
    00 06/12/2016 15:41
    attualmente sto usando la funzione SE concatenata con &" "&
    formula usata
    ma mi risulta molto lungo e con un alto rischio di commettere errori
  • OFFLINE
    ninai
    Post: 3.577
    Registrato il: 04/07/2012
    Città: BARCELLONA POZZO DI GOTTO
    Età: 61
    Utente Master
    2010
    00 06/12/2016 19:12
    ciao
    puoi usare qualcosa di simile
    =CERCA.VERT(B74;tabella;3+(J8="media");FALSO),
    ma non la puoi applicare alle immagini, ci vogliono i riferimenti di cella, per quanto riguarda l'indice da mettere nella formula, è calibrato da +(J8="media"), questo lo farà aumentare di una colonna, qualora fosse VERO.



    --------------------------------------------------
    "So che spiegare il proprio problema, in modo comprensibile, richiede un certo impegno ed è un lavoro "palloso", ma qualcuno lo deve pur fare ....., indovina chi?" (Cit. "Scossa")
    --------------------------------------------------
    excel 2010 ,
    Win 8
  • OFFLINE
    dartx
    Post: 14
    Registrato il: 16/07/2016
    Città: MILANO
    Età: 31
    Utente Junior
    2013
    00 07/12/2016 14:29
    Re:
    ninai, 06/12/2016 19.12:


    =CERCA.VERT(B74;tabella;3+(J8="media");FALSO)


    b74 é la cella di riferimento ; tabella = lista dove ho l'elenco ?; il +3 che significa?