Formula SE DESTRA



  • Formula SE DESTRA
    di alberto (utente non iscritto) data: 08/10/2013 16:31:09

    Salve. Mi servirebbe questa formula da inserire in W3: se l'ultimo numero della cella X4=3 L9/R12 se l'ultimo numero quindi X4=4 L9/U12 se uguale a 5 L9/U9. Grazie in anticipo


  • Visualizzazione dato scelto in combobox
    di salvewa (utente non iscritto) data: 08/10/2013 16:40:31

    Ciao a tutti
    Di seguito il mio problema di cui allego file con dati non sensibili.

    Premetto, per correttezza, che tutto il codice è opera del gentilissimo HarryBosch che saluto e ringrazio tanto.
    Necessiterei, se possibile, di modificare parte di una macro che riporto giù.
    La macro in questione garantisce l'univocità dei dati nelle combobox dopo aver scelto un qualsiasi valore sempre in combo.
    Allo stato attuale, scelto un valore da combo questo viene subito ripulito e quindi non rimane visibile nella combobox.
    La parte da modificare è proprio questa, cioè: scelto il valore nella combo questo deve normalmente rimanere visibile fino alla successiva scelta di un altro valore.
    Ho provato a cancellare:
    Me.Controls("Combobox" & i).Clear
    ottenendo si la visualizzazione del valore scelto nella combo ma perdendo, cosa assolutamente essenziale per questo applicativo, l'univocità dei dati dopo la scelta del valore dalla combo.
    Quindi, come modificare il codice giù in modo tale da visualizzare normalmente i valori scelti nelle combo senza alterare l'univocità dei dati nelle combo dopo una qualunque scelta di un dato valore?
    Spero di essere stato chiaro.
    Attendo vostre possibili soluzioni.
    Grazie anticipatamente
    salvewa
     
    Sub popola_combo()
        Dim i As Long, cUnici As Collection, vEle As Variant, t As Byte
        For i = 1 To 37
            Set cUnici = New Collection
            On Error Resume Next
            For Each vEle In mydata.Columns(i).Offset(1).Cells
                If vEle <> "" Then cUnici.Add vEle, CStr(vEle)
            Next
    
            aggiorna = False
            Me.Controls("Combobox" & i).Clear
            aggiorna = True
    
            For Each vEle In cUnici
                Me.Controls("Combobox" & i).AddItem vEle
            Next
            Set cUnici = Nothing
        Next
    End Sub



  • di Mister_x (utente non iscritto) data: 08/10/2013 17:05:07

    rispondo a Alberto per formula a destra e relative divisioni
    in quanto salveva mi sembra che doveva postare in un altro luogo o aprire un altro post

    in W3=SE(DESTRA(TESTO(X4;"#0");1)="3";L9/R12;SE(DESTRA(TESTO(X4;"#0");1)="4";L9/U12;SE(DESTRA(TESTO(X4;"#0");1)="5";L9/U9;"")))

    ciao da Mister_x
     
    W3=SE(DESTRA(TESTO(X4;"#0");1)="3";L9/R12;SE(DESTRA(TESTO(X4;"#0");1)="4";L9/U12;SE(DESTRA(TESTO(X4;"#0");1)="5";L9/U9;"")))






  • di alberto (utente non iscritto) data: 08/10/2013 20:13:31

    Ok Mister_x, la tua formula è quella che cercavo! Grazie tante



  • di Grograman data: 09/10/2013 08:30:52

    Risparmiamo qualche carattere ;)
     
    =--(--DESTRA(W5)=3)*(L9/R12)--(--DESTRA(W5)=4)*(L9/U12)--(--DESTRA(W5)=5)*(L9/U9)



  • di Alberto (utente non iscritto) data: 09/10/2013 11:06:02

    Grazie. Volevo aggiungere questo: se X4 è =>0 <3 "" come devo modificare?



  • di Mister_x (utente non iscritto) data: 09/10/2013 12:33:52

    ciao

    con la mia funzione la modifica e' questa con il dividendo in L9 e divisore in L10

    =SE.ERRORE(SE(DESTRA(TESTO(X4;"#0");1)<"3";L9/L10;SE(DESTRA(TESTO(X4;"#0");1)="3";L9/R12;SE(DESTRA(TESTO(X4;"#0");1)="4";L9/U12;SE(DESTRA(TESTO(X4;"#0");1)="5";L9/U9;""))));"dato errato o divisore mancante o valore 0")

    di grogaman
    =SE.ERRORE(--(--DESTRA(X4)<3)*(L9/L10)--(--DESTRA(X4)=3)*(L9/R12)--(--DESTRA(X4)=4)*(L9/U12)--(--DESTRA(X4)=5)*(L9/U9);"manca un Valore di divisore o un valore e' a 0")

    PS guarda che con la funzione impostata da grograman, che saluto , non ci deve essere nessun valore di divisore a nullo o a 0 altrimenti ti da sempre errore anche se il riferimento di calcolo e' fatto su altre celle e non su quella implicata di tale valore

    ciao da Mister_x
     
    =SE.ERRORE(SE(DESTRA(TESTO(X4;"#0");1)<"3";L9/L10;SE(DESTRA(TESTO(X4;"#0");1)="3";L9/R12;SE(DESTRA(TESTO(X4;"#0");1)="4";L9/U12;SE(DESTRA(TESTO(X4;"#0");1)="5";L9/U9;""))));"dato errato o divisore mancante o valore 0")
    
    =SE.ERRORE(--(--DESTRA(X4)<3)*(L9/L10)--(--DESTRA(X4)=3)*(L9/R12)--(--DESTRA(X4)=4)*(L9/U12)--(--DESTRA(X4)=5)*(L9/U9);"manca un Valore di divisore o un valore e' a 0")
    
    





  • 6Ok, la formula funziona. Giusto per imparare, se
    di alberto (utente non iscritto) data: 09/10/2013 14:25:00

    Ok, la formula funziona. Giusto per imparare, com'è la formula per inserire compreso tra 2 numeri? Quindi ad esempio >2 < 5 perché così non va? SE(DESTRA(TESTO(X4;"#0");1)>"2" <"5";L9/R9



  • di Vecchio Frac data: 09/10/2013 14:39:19

    cit. "perché così non va? SE(DESTRA(TESTO(X4;"#0");1)>"2" <"5";L9/R9"
    ---> La risposta più corretta alla domanda "perchè così non va?" è che la sintassi della formula è sbagliata. Bisogna inserire le formule utilizzando il giusto ordine delle espressioni, in un modo comprensibile a Excel.

    In un linguaggio naturale, la descrizione della formula deve essere simile a questa:"se il primo carattere a destra è maggiore di due e minore di cinque, restituisci la prima parte della formula, altrimenti la seconda".
    La trascrizione in formula è:
     
    'controlla se la cella A10 termina con 3 oppure con 4
    =SE(E(DESTRA(A10;1)>"2";DESTRA(A10;1)<"5");"rilevato 3 o 4"; "non rilevato 3 o 4")






  • di Mister_x (utente non iscritto) data: 09/10/2013 15:10:20

    ciao

    giusto per imparare
    in questo caso e' utile avere i numeri sottoforma di valori e non di testo quindi e' meglio trasformarli
    per la trasformazione di un valore in formato testo basta utilizzare la funzione VALORE() o --() che equivale a valore oppure utilizzare la moltiplicazione ess
    stringa"3"*1=valore 3
    quindi adesso ti passo tutta la tua funzione che calcola anche il valore >5 <9 quindi 6,7,8 dando come risultato OK

    =SE.ERRORE(SE(--(DESTRA(TESTO(X4;"#0");1))<3;L9/L10;SE(--(DESTRA(TESTO(X4;"#0");1))=3;L9/R12;SE(--(DESTRA(TESTO(X4;"#0");1))=4;L9/U12;SE(--(DESTRA(TESTO(X4;"#0");1))=5;L9/U9;SE(E(--(DESTRA(TESTO(X4;"#0");1))>5;--(DESTRA(TESTO(X4;"#0");1))<9);"OK";"")))));"dato errato o divisore mancante o valore 0")

    ciao da Mister_x





  • di alberto (utente non iscritto) data: 09/10/2013 15:23:47

    La formula per il mio caso è apposto. Però ho provato in un altro foglio dove mi serve solo questo caso e mi da errore: se il primo numero a destra di T4 è >2 <5 L7/R7 altrimenti ""



  • di Mister_x (utente non iscritto) data: 09/10/2013 17:17:26

    riciao

    =SE(E(--(DESTRA(TESTO(T4;"#0");1))>2;--(DESTRA(TESTO(T4;"#0");1))<5);L7/R7;"")


    Mister_x





  • di Mister_x (utente non iscritto) data: 09/10/2013 18:52:10

    ciao

    passato un po di tempo, diamo una bella ripulita alle formule che ti ho proposto

    la prima
    =SE.ERRORE(SE(--(DESTRA(X4;1))<3;L9/L10;SE(--(DESTRA(X4;1))=3;L9/R12;SE(--(DESTRA(X4;1))=4;L9/U12;SE(--(DESTRA(X4;1))=5;L9/U9;SE(E(--(DESTRA(X4;1))>5;--(DESTRA(X4;1))<9);"OK";"")))));"dato errato o divisore mancante o valore 0")
    la seconda
    =SE(E(--(DESTRA(T4;1))>2;--(DESTRA(T4;1))<5);L7/R7;"")

    questo e' per farti capire una nuova sintassi di utilizzo delle funzioni

    ciao da Mister_x





  • di alberto (utente non iscritto) data: 09/10/2013 20:13:12

    Ok, ora tutto apposto. Sei un grande! Grazie 1000