È 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

Trovare valori uguali e restituire i nomi legati ad essi

  • Messaggi
  • OFFLINE
    Yeshua75
    Post: 8
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 03/03/2017 14:30
    Salve,

    Ho i mesi Gennaio; Febbraio; Marzo etc.

    Vorrei che in T24, fosse restituito il nome dei mesi che hanno lo stesso UTILE.

    Se per esempio Gennaio e Marzo hanno lo stesso UTILE (100 €), in T24 deve comparirmi:

    Gennaio, Marzo


    [SM=x423021]
    file in allegato!


    [Modificato da Yeshua75 03/03/2017 14:33]
  • OFFLINE
    GiuseppeMN
    Post: 2.573
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 03/03/2017 16:15
    Se anche Maggio e Luglio hanno lo stesso utile (250 €) ma, diverso dall'utile di Gennaio e Marzo (100 €), in T24 cosa deve comparire?

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 8
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 03/03/2017 17:27
    uhmm,

    in questo caso

    se è possibile una frase, per esempio:

    "trovati mesi con lo stesso utile"

    o sinceramente non saprei . . . tu che diresti di fare?
  • OFFLINE
    GiuseppeMN
    Post: 2.574
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 03/03/2017 17:34
    Che ne dici di un Codice VBA?

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 9
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 03/03/2017 17:39
    Si potrebbe andare bene anche questo. . . Intendi un alert?
  • OFFLINE
    GiuseppeMN
    Post: 2.575
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 03/03/2017 17:49
    Pensavo ad una stringa con l'elenco di tutti i mesi con Utile uguale:
    -   Gennaio, Marzo (100 €) - Maggio, Luglio (250 €)

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 10
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 03/03/2017 18:01
    Potrebbe andare . . .
  • OFFLINE
    GiuseppeMN
    Post: 2.576
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 03/03/2017 18:09
    Che conoscenze hai di VBA?

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 11
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 03/03/2017 18:12
    Scarse, come vedi nel foglio c'è già qualcosa in VBA però vado per tentativi
  • OFFLINE
    GiuseppeMN
    Post: 2.577
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 03/03/2017 19:43
    Ok, ora sto uscendo; domani mattina vedo quello che riesco a fare.

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    GiuseppeMN
    Post: 2.580
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 04/03/2017 07:58
    Non credo sia la soluzione ottimale, ma, dopo le abbondanti libagioni durante la cena di ieri sera, è il massimo che riesco a proporre.

    In Cella "E38":
     =SE(E$19="";0;CONTA.SE($E$21:$P$21;E$21)-1) 

    da copiare nel Range "E38:P38"

    Pulsante "Test", collegato al Codice VBA:

    Option Explicit
    
    Sub Utili()
    Application.ScreenUpdating = False
    Dim x As Byte, y As Byte, NUt As Byte
    Dim Utl As String
    
        Range(Cells(37, 5), Cells(37, 16)).ClearContents
        For x = 5 To 16
            If Cells(21, x) = 0 Then Cells(37, x) = 0
        Next x
            Cells(37, 5).Value = "X"
        For x = 5 To 15
            If Cells(37, x).Value = "" And Cells(21, x).Value <> "" Then Cells(37, x).Value = "X"
            If Cells(21, x) = "" Or Cells(37, x) <> 0 Then
                If Cells(37, x) <> "" And Cells(21, x) <> "" And Cells(38, x) <> 0 Then Utl = Utl & Cells(18, x).Value
            End If
                NUt = 0
                For y = 6 To 16
                If Cells(21, x) = Cells(21, y) And Cells(21, y) <> "" And Cells(37, y).Value = "" Then
                    Utl = Utl & ", " & Cells(18, y)
                        Cells(37, x).Value = 0
                        Cells(37, y).Value = 0
                    NUt = 1
                End If
                Next y
                    If NUt = 1 Then Utl = Utl & " (" & Cells(21, x) & " €) - "
        Next x
            Utl = Left(Utl, Len(Utl) - 3)
            Cells(24, 20).Value = Utl
                Range(Cells(37, 5), Cells(37, 16)).ClearContents
    Application.ScreenUpdating = True
        Cells(24, 20).Select
    End Sub
    


    Il risultato viene proposto in Cella "T24"

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 12
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 04/03/2017 13:53
    Ok. Ora provo, intanto grazie!

    Uhmm, nonostante tu sia stato chiarissimo non riesco a farlo funzionare (causa mie scarse conoscenze).

    Potresti inviarmi il file che hai modificato tu?

    [Modificato da Yeshua75 04/03/2017 15:00]
  • OFFLINE
    Yeshua75
    Post: 13
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 04/03/2017 16:13
    OK, ci sono riuscito . . .

    il fatto è che se le celle dell'UTILE sono vuote per tutti i MESI o non ci sono almeno 2 celle con lo stesso UTILE spunta fuori l'errore descritto nelle immagini.

    Se si può fare, sarebbe bello che:

    1) premendo il pulsante "test" e le celle UTILE sono tutte vuote, spuntasse la frase (MsgBox): "Attenzione! Nessun Utile trovato."

    2) premendo il pulsante "test" e gli UTILI sono tutti differenti, spuntasse la frase (MsgBox): "Non ci sono mesi con lo stesso Utile."

    3) premendo il pulsante "test" e almeno 2 Mesi hanno lo stesso UTILE, compia l'operazione normalmente per come hai fatto tu.

    [SM=x423023]
  • OFFLINE
    GiuseppeMN
    Post: 2.581
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 04/03/2017 19:36
    Yeshua75; chiede:


    1) premendo il pulsante "test" e le celle UTILE sono tutte vuote, spuntasse la frase (MsgBox): "Attenzione! Nessun Utile trovato."



    Option Explicit
    
    Sub Utili()
    Application.ScreenUpdating = False
    Dim x As Byte, y As Byte, NUt As Byte
    Dim Utl As String
    
        If Application.WorksheetFunction.Max(Range("E19:P20")) = 0 Then
            MsgBox "Nessun utile." & Chr(10) & " La prossima volta, prima di premere il pulsante " _
            & Chr(34) & "Test" & Chr(34) & "," & Chr(10) & "controlla che ci sia almeno un Utile congruente."
            End
        End If
    


    Yeshua75; chiede:


    2) premendo il pulsante "test" e gli UTILI sono tutti differenti, spuntasse la frase (MsgBox): "Non ci sono mesi con lo stesso Utile."



    Option Explicit
    
    Sub Utili()
    Application.ScreenUpdating = False
    On Error GoTo 10
    .
    .
    .
                Range(Cells(37, 5), Cells(37, 16)).ClearContents
    Application.ScreenUpdating = True
            End
    10:
        Range(Cells(37, 5), Cells(37, 16)).ClearContents
            MsgBox "Non ci sono mesi con lo stesso Utile."
    Application.ScreenUpdating = True
    End Sub
    


    Non chiedermi di inviarti il File con il quale ho eseguito i Test; ci sono Celle unite.
    Le Celle unite creano più problemi che benefici.

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 15
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 05/03/2017 08:39
    scusami, ma non riesco a capire dove mettere la 2a parte di codice.

    La prima la ho messa nella parte evidenziata e funziona . . .


  • OFFLINE
    GiuseppeMN
    Post: 2.582
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 05/03/2017 12:39
    Yeshua75; chiede:


    scusami, ma non riesco a capire dove mettere la 2a parte di codice.



    Dove ho indicato, On Error GoTo intercetta eventali errori; i punti di sospensione rappresentano le istruzioni intermedie del Codice VBA.
    Il Codice VBA completo potrebbe essere una cosa di questo tipo:

    Option Explicit
    
    Sub Utili()
    Application.ScreenUpdating = False
    On Error GoTo 10
    Dim x As Byte, y As Byte, NUt As Byte
    Dim Utl As String
    
        If Application.WorksheetFunction.Max(Range("E19:P20")) = 0 Then
            MsgBox "Nessun utile." & Chr(10) & " La prossima volta, prima di premere il pulsante " _
            & Chr(34) & "Test" & Chr(34) & "," & Chr(10) & "controlla che ci sia almeno un Utile congruente."
            End
        End If
        
        Range(Cells(37, 5), Cells(37, 16)).ClearContents
        
        For x = 5 To 16
            If Cells(21, x) = 0 Then Cells(37, x) = 0
        Next x
        
            Cells(37, 5).Value = "X"
        For x = 5 To 15
            If Cells(37, x).Value = "" And Cells(21, x).Value <> "" Then Cells(37, x).Value = "X"
            If Cells(21, x) = "" Or Cells(37, x) <> 0 Then
                If Cells(37, x) <> "" And Cells(21, x) <> "" And Cells(38, x) <> 0 Then Utl = Utl & Cells(18, x).Value
            End If
                NUt = 0
                For y = 6 To 16
                If Cells(21, x) = Cells(21, y) And Cells(21, y) <> "" And Cells(37, y).Value = "" Then
                    Utl = Utl & ", " & Cells(18, y)
                        Cells(37, x).Value = 0
                        Cells(37, y).Value = 0
                    NUt = 1
                End If
                Next y
                    If NUt = 1 Then Utl = Utl & " (" & Cells(21, x) & " €) - "
        Next x
            Utl = Left(Utl, Len(Utl) - 3)
            Cells(24, 20).Value = Utl
                Range(Cells(37, 5), Cells(37, 16)).ClearContents
    Application.ScreenUpdating = True
        Cells(24, 20).Select
            End
    10:
        Range(Cells(37, 5), Cells(37, 16)).ClearContents
            MsgBox "Non ci sono mesi con lo stesso Utile."
    Application.ScreenUpdating = True
        Cells(24, 20).Select
    End Sub
    



    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 16
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 05/03/2017 13:21
    Grazieeeee!!!!!

    Sei stato fantastico.
    [SM=x423028]
  • OFFLINE
    Yeshua75
    Post: 17
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 05/03/2017 14:22
    rieccomi ,

    con l'ultimo codice che mi hai dato funziona tutto benissimo ma appena metto la protezione al foglio ad eccezione delle celle sbloccate, spunta l'errore in figura ed il pulsante test non va.

    Si può fare qualcosa?
    [Modificato da Yeshua75 05/03/2017 15:57]
  • OFFLINE
    Yeshua75
    Post: 19
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 05/03/2017 16:29
    Niente, non va.

    Appena metto la protezione al foglio spunta l'errore di cui sopra . . .

    ho provato anche a registrare la macro.
  • OFFLINE
    GiuseppeMN
    Post: 2.583
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 06/03/2017 07:38
    Leggo solo ora.

    Yeshua75; scrive:


    Niente, non va.

    Appena metto la protezione al foglio spunta l'errore di cui sopra . . .

    ho provato anche a registrare la macro.



    Non mi pare si fosse parlato di Foglio di lavoro protetto, nel qual caso avrei inserito all'inizio del Codice VBA:

    ActiveSheet.Unprotect Password:= tua password


    e, alla fine:

    ActiveSheet.Protect Password:= tua password



    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 21
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 06/03/2017 15:12
    Premetto che il mio scopo è quello di proteggere il foglio per evitare che accidentalmente vengano cancellate formule e modificati scenari.
    Detto questo, perdona la mia ignoranza, questo è il codice che mi hai dato.
    In quale punti devo inserire le 2 stringhe?

    E quando le inserisco devo farlo con foglio Protetto o no?

    p.s.: volevo incollarti il codice ma non ho ancora capito sull'editor come fare quando ti rispondo . . .
    [Modificato da Yeshua75 06/03/2017 15:18]
  • OFFLINE
    Yeshua75
    Post: 22
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 06/03/2017 17:20
    Ho provato a mettere il codice all'inizio e alla fine con la mia password ma mi dà sempre errore
  • OFFLINE
    Yeshua75
    Post: 23
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 06/03/2017 19:33
    ActiveSheet.Unprotect Password:= "tua password"


    ho risolto, non sapevo che dovevo mettere la mia password tra le "" virgolette.

    Ora però mi leva la protezione al foglio quando premo il pulsante "test" e non la rimette più.

    Non so come mettere le 2 stringhe in modo tale che quando premo test tolga la password per non andare in errore e dopo aver fatto il calcolo la rimetta per evitare che le celle restino sbloccate.


    [Modificato da Yeshua75 06/03/2017 20:41]
  • OFFLINE
    Yeshua75
    Post: 25
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 07/03/2017 14:16
    Siiii,


    ci sono riuscito, mettendo le stringhe nei punti evidenziati.

    Grazie per il tuo aiuto, senza di te non ci sarei riuscito!!
    [SM=x423026]
  • OFFLINE
    Yeshua75
    Post: 26
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 07/03/2017 14:49
    . . . solo una ultima cosa se è possibile.

    se ci sono due mesi con utile negativo come in figura e metto solo il dato "OUT", premendo il pulsante "TEST" nel mio caso "CALCOLA" i mesi trovati in "T24" non sono corretti.


    Si può fare qualcosa?
  • OFFLINE
    GiuseppeMN
    Post: 2.585
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 07/03/2017 18:52
    Potresti provare a modificare la Formula in Cella "E38", in questo modo:

    =SE(E(E$19="";E$20="");0;CONTA.SE($E$21:$P$21;E$21)-1)


    da copiare nel Range "E38:P38"

    Però, perdonami, ma credo che Forum non sia la piattaforma più adeguata per richieste che continuano a cambiare.

    A mio modesto parere, Forum può fornirti delle indicazioni di base, non una soluzione "chiavi in mano", per questo esistono ottime Software House che, a costi contenuti, possono offrire una soluzione adeguata con modifiche in corso d'opera.


    Con amicizia, Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    Yeshua75
    Post: 27
    Registrato il: 02/03/2017
    Città: TRAPANI
    Età: 49
    Utente Junior
    Microsoft 365
    00 07/03/2017 23:04
    Sì hai ragione.

    Ma sono cose l'una legata all'altra e che cambiano di conseguenza.
    Viene spontaneo chiedere aiuto a persone preparate e disponibili come te.

    Io con l'età che mi ritrovo e col tempo che trovo cerco di fare del mio meglio ma non è semplice per me.

    E poi come si dice:
    Ubi maior minor cessat.

    Il forum tecnicamente è sicuramente quello che dici tu ma è anche condivisione ed aiutare gli altri, come appunto hai fatto tu con me.

    Grazie ancora.
    Con amicizia, Salvo!

  • OFFLINE
    GiuseppeMN
    Post: 2.586
    Registrato il: 03/04/2013
    Utente Veteran
    Excel 2000 - 2013
    00 09/03/2017 06:48
    Buona giornata, Salvo;
    riesco a leggere solo ora.

    Le Tue sono Considerazioni molto giuste.


    Alla prossima.

    Buon Lavoro e buona serata.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013