Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Trovare valori uguali e restituire i nomi legati ad essi

Ultimo Aggiornamento: 09/03/2017 06:48
Post: 8
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 2.573
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 8
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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?
Post: 2.574
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
03/03/2017 17:34

Che ne dici di un Codice VBA?

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 9
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
03/03/2017 17:39

Si potrebbe andare bene anche questo. . . Intendi un alert?
Post: 2.575
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 10
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
03/03/2017 18:01

Potrebbe andare . . .
Post: 2.576
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
03/03/2017 18:09

Che conoscenze hai di VBA?

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 11
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
03/03/2017 18:12

Scarse, come vedi nel foglio c'è già qualcosa in VBA però vado per tentativi
Post: 2.577
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 2.580
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 12
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 13
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 2.581
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 15
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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 . . .


Post: 2.582
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 16
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
05/03/2017 13:21

Grazieeeee!!!!!

Sei stato fantastico.
[SM=x423028]
Post: 17
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 19
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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.
Post: 2.583
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 21
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 22
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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
Post: 23
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 25
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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]
Post: 26
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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?
Post: 2.585
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Post: 27
Registrato il: 02/03/2017
Città: TRAPANI
Età: 49
Utente Junior
Microsoft 365
OFFLINE
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!

Post: 2.586
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
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
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:29. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com