Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [VB6] Tradurre una funzione Excel per vb6 (if concatenate)

    Ciao,
    sto letteralmente impazzendo perchè non riesco a capire come si concatena questa if (presa da una cella di un foglio di calcolo excel)


    =SE(A17="S";SE(A18="S";SE(A19="S";SE(D17>0;D17/3;0);SE(D17>0;D17/2;0));SE(A19="S";SE(D17>0;D17/2;0);SE(D17>0;D17;0)));0)


    la cella assume il valore in base a diverse if ma non riesco a concatenarle :master:

    le celle A (quindi A17, A19) sono delle checkbox che hanno valore "S" o "N".

    Le funzioni Excel mi confondono di brutto :master:

    Grazie in anticipo
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  2. #2
    Dovrebbe essere qualcosa di questo genere (metto i nomi delle celle come variabili perché non so dal tuo programma come tu ci acceda):
    codice:
    If A17="S" Then
        If A18="S" Then
            If A19="S" Then
                If D17>0 Then
                    risultato=D17/3
                Else
                    risultato=0
                End If
            Else
                If D17>0 Then
                    risultato=D17/2
                Else
                    risultato=0
                End If
            End If
        Else
            If A19="S" Then
                If D17>0 Then
                    risultato=D17/2
                Else
                    risultato=0
                End If
            Else
                If D17>0
                    risultato=D17
                Else
                    risultato=0
                End If
        End If
    Else
        risultato = 0
    End If
    .
    Si può comunque semplificare in questa maniera:
    codice:
    If A17="S" And D17>0 Then
        If A18="S" Then
            If A19="S" Then
                risultato=D17/3
            Else
                risultato=D17/2
            End If
        Else
            If A19="S" Then
                risultato=D17/2
            Else
                risultato=D17
        End If
    Else
        risultato=0
    End If
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    Non so minnimamente se è giusto, bisogna provarlo...è miglirabilissimo...anche perchè dovrei vedere meglio il fogli excel per capire come funziona la "funzione".
    comunque:

    codice:
    If A17.Value = Checked Then
        '[2] SE(A18="S";SE(3);SE(6)
        If A18.Value = Checked Then
            '[3](A19="S";SE(D17>0;D17/3;0);SE(D17>0;D17/2;0))
            If A19.Value = Checked Then
                '[4][5] SE(D17>0;D17/3;0);SE(D17>0;D17/2;0)
                If d17 > 0 Then
                    a = d17 / 3
                    b = d17 / 2
                Else
                    a = 0
                    b = 0
                End If
            End If
    else
            '[6]SE(A19="S";SE(D17>0;D17/2;0);SE(D17>0;D17;0))
            If A19.Value = Checked Then
                'SE(D17>0;D17/2;0)
                If d17 > 0 Then
                    a = d17 / 2
                    b = d17
                Else
                    a = 0
                    b = 0
                End If
            End If
        End If
    Else
        a = 0
        b = 0
    End If

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    eidt: ecco appunto, anticipato di un soffio...

  5. #5
    Non hai idea ....
    sei l'uomo che voglio essere da grande!!!

    Mancava una end if, l'ho messa ed è tutto ok.

    Grazie mille
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  6. #6
    Un altro esempio... mi serve ache per capirne la logica

    la formula

    =SE((K10-K11)>0,1;"Ricca";SE((K13<-0,10501);"Bilanciare!";SE((K13>0,105);"Diminuire"; "Tutto apposto")))


    sarebbe
    codice:
    if (K10 - K11) > 0,1 then
       if (K13 < -0.10501) then
             risultato = "Bilanciare"
       end if
       if (K13 > 0.105) then
             risultato = "Diminuire"
       end if
    else
             risultato = "Tutto apposto"
    
    end if
    Giusto? :master:

    ...oddio no manca la valorizzazione con "Ricca"
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  7. #7
    codice:
    If (K10-K11)>0,1 Then
        risultato="Ricca"
    Else
        If K13<-0.10501 Then
            risultato="Bilanciare!"
        Else
            If K13>0,105 Then
                risultato="Diminuire"
            Else
                risultato="Tutto a posto"
            End If
        End If
    End If
    anche se in effetti si può semplificare in questo modo:
    codice:
    If (K10-K11)>0,1 Then
        risultato="Ricca"
    ElseIf K13<-0.10501 Then
        risultato="Bilanciare!"
    ElseIf K13>0,105 Then
        risultato="Diminuire"
    Else
        risultato="Tutto a posto"
    End If
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Divino!

    Grazie mille
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

  9. #9
    Prego; ciao!
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Mitaly scusa se ti distrurbo ancora ma ho lo stesso problema e risbrocco anora.....

    ho questa e non riesco a tradurla
    =SE(pippo_F46>0;SE((pippo_AA41-pippo_AA42)>0;SE((pippo_AA41-AA42)>pippo_F46;0;((pippo_F46-(pippo_AA41-pippo_AA42))/2)*pippo_I27*pippo_I28/1000000);SE((-pippo_AA41+pippo_AA42)>pippo_F46;pippo_F46*pippo_I 27*pippo_I28/1000000;(((pippo_AA42-pippo_AA41)+(pippo_F46-(pippo_AA42-pippo_AA41))/2)*pippo_I27*pippo_I28/1000000)));0)

    Un giorno riuscirò a comprendere come si fà???

    Grazie in anticipo
    Dalla vita altrui attingeva la sua oscura magia...
    Membro del Sacro Ordine degli elfi oscuri di Kand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.