Funzione nidificata IF con OR e AND

Anonimo
2015-06-23T17:47:26+00:00

buona sera,

potrei avere il vostro aiuto?

ho creato questa formula

=IF(AND(OR(D29="";I29="";N29="";O29="";Q29=""));IF(OR(WEEKDAY(B29)=1);"$";IF(OR(WEEKDAY(B29)=7);"£"));"X")

in pratica desidererei che se la celle D29 o la cella I29 o la cella N29 o la cella O29 o la cella Q29 ha la X (una solo di loro la può contenere e non tutte insieme) se è sabato mi riporti £ se è domenica mi riporti $. la data è contenuta in B29

se tutte le celle sono vuote deve restituirmi X

a me restituisce sempre £ o $ che ci sia la X o no nelle celle D I N O Q

excel 2010 inglese

grazie in anticipo 

saluti

stefano

Microsoft 365 e Office | Excel | Per la casa | Windows

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

16 risposte

Ordina per: Più utili
  1. Anonimo
    2015-06-23T20:56:29+00:00

    Ciao Stefano,

    mancano un po' di informazioni. Per esempio:

    1. le celle D29, I29, N29, O29 E Q29 possono essere solo o vuote o con una "X" solo in una oppure possono contenere altro?
    2. Se il giorno non è né sabato né domenica?...

    Ad ogni modo vedi se la formula seguente si avvicina a ciò che hai in mente:

    =SE(D29&I29&N29&O29&Q29="X";SCEGLI(GIORNO.SETTIMANA(B29;2);"";"";"";"";"";"£";"$");"X")

    =IF(D29&I29&N29&O29&Q29="X",CHOOSE(WEEKDAY(B29,2),"","","","","","£","$"),"X")

    ciao maurizio,

    solo una delle celle potrebbe contenere una x altrimente restano vuote

    la formula che mi hai dato restituisce delle x anche se non è sabbato o domenica

    la cella a cui applico la formula in pratica se io metto la x in una delle 5 celle e quel giorno e sabato o domenica deve restituirmi £ o $

    se le 5 celle sono vuote deve restituirmi la x se è sabato y se è domenica

    tutti gli altri giorni della settimana non deve restituire niente

    grazie mille

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-23T20:49:44+00:00

    Ciao Stefano,

    Ho postato il mio codice troppo frettolosamente! Sostituisci il codice della UDF con la seguente versione:

    '=========>>

    Option Explicit

    '--------->>

    Public Function PoundOrDollarSymbol(dateCell, ParamArray xCells()) As String

        Dim rCell As Range

        Dim i As Long

        Dim iCtr As Long

        PoundOrDollarSymbol = vbNullString

        For i = LBound(xCells) To UBound(xCells)

            For Each rCell In xCells(i).Cells

                If rCell.Value = "x" Then

                    iCtr = iCtr + 1

                End If

                If iCtr > 1 Then

                    GoTo XIT

                End If

            Next rCell

        Next i

        If iCtr = 0 Then

            GoTo XIT

        End If

        Select Case Weekday(dateCell)

        Case vbSaturday

            PoundOrDollarSymbol = "£"

        Case vbSunday

            PoundOrDollarSymbol = "$"

        End Select

    Exit Function

    XIT:

        PoundOrDollarSymbol = vbNullString

    End Function

    '<<=========

    ===

    Regards,

    Norman

    ciao norman,

    purtroppo sono completamente negato per il vba

    non riesco a fare nulla

    e da un mese che provo ad inserire un calendario a tendina nella cella e non sono riuscito nemmeno a far apparire controllo calendario negli strumenti nonostante io abbia provato tutto quello trovato su internet

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-23T20:16:41+00:00

    Ciao Stefano,

    mancano un po' di informazioni. Per esempio:

    1. le celle D29, I29, N29, O29 E Q29 possono essere solo o vuote o con una "X" solo in una oppure possono contenere altro?
    2. Se il giorno non è né sabato né domenica?...

    Ad ogni modo vedi se la formula seguente si avvicina a ciò che hai in mente:

    =SE(D29&I29&N29&O29&Q29="X";SCEGLI(GIORNO.SETTIMANA(B29;2);"";"";"";"";"";"£";"$");"X")

    =IF(D29&I29&N29&O29&Q29="X",CHOOSE(WEEKDAY(B29,2),"","","","","","£","$"),"X")

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-23T20:11:21+00:00

    Ciao Stefano,

    Ho postato il mio codice troppo frettolosamente! Sostituisci il codice della UDF con la seguente versione:

    '=========>>

    Option Explicit

    '--------->>

    Public Function PoundOrDollarSymbol(dateCell, ParamArray xCells()) As String

        Dim rCell As Range

        Dim i As Long

        Dim iCtr As Long

        PoundOrDollarSymbol = vbNullString

        For i = LBound(xCells) To UBound(xCells)

            For Each rCell In xCells(i).Cells

                If rCell.Value = "x" Then

                    iCtr = iCtr + 1

                End If

                If iCtr > 1 Then

                    GoTo XIT

                End If

            Next rCell

        Next i

        If iCtr = 0 Then

            GoTo XIT

        End If

        Select Case Weekday(dateCell)

        Case vbSaturday

            PoundOrDollarSymbol = "£"

        Case vbSunday

            PoundOrDollarSymbol = "$"

        End Select

    Exit Function

    XIT:

        PoundOrDollarSymbol = vbNullString

    End Function

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-06-23T19:52:08+00:00

    Ciao Stefano,

    Invece di una soluzione di formula, forse vorresti provare la seguente UDF(funzione definita da utente), PoundOrDollarSymbol:

    • Alt-F11 per aprire l'editor di VBA
    • Alt-IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Function PoundOrDollarSymbol(dateCell, ParamArray xCells()) As String

        Dim rCell As Range

        Dim i As Long

        Dim iCtr As Long

        PoundOrDollarSymbol = vbNullString

        For i = LBound(xCells) To UBound(xCells)

            For Each rCell In xCells(i).Cells

                If rCell.Value = "x" Then

                    iCtr = iCtr + 1

                End If

                If iCtr > 1 Then

                    PoundOrDollarSymbol = vbNullString

                Exit Function

                End If

            Next rCell

        Next i

        Select Case Weekday(dateCell)

        Case vbSaturday

            PoundOrDollarSymbol = "£"

        Case vbSunday

            PoundOrDollarSymbol = "$"

        End Select

    End Function

    '<<=========

    Alt-Q per chiudere l'editor di VBA e tornare a Excel.

    Questa funzione viene usata come una fuzione intrinseca di Excel. Nel caso citato da te, la formula da immettere sarebbe:

                                   =PoundOrDollarSymbol(B29,D29,N29,O29,Q29)

    oppure

                                   =PoundOrDollarSymbol(B29,D29,N29:O29,Q29)

    Questa funzione ha due argomenti: il primo parametro della funzione (d ateCell) si riferisce alla cella con la data; il secondo parametro (xCells) si riferisce ad una o più celle o intervalli.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento