|
Login
  • Page:
  • 1

TOPIC: aiuto doppioni

aiuto doppioni 8 years 2 months ago #7892

  • stranger88
  • stranger88's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 2
  • Karma: 0
Salve vorrei un piccolo aiuto in pratica ho un foglio di calcolo con dei numeri identificativi, ma avvolte per errore di distrazione ho dei doppioni, come posso fare in modo che quando ce già un numero inserito nel foglio mi dia un avviso o qualcosa? e soprattutto per tutto il foglio se per esempio sulla cella A2 ho scritto 16 se scrivo 16 sulla cella D7 mi deve dare un avviso che quel numero è gia inserito nel foglio, spero mi aiutate! grazie mille
The administrator has disabled public write access.

aiuto doppioni 8 years 2 months ago #7893

  • Canapone
  • Canapone's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 1346
  • Thank you received: 160
  • Karma: 108
Ciao,

potresti usare la formattazione condizionale per evidenziare che il numero sia già presente sul foglio.

La regola di attivazione potrebbe essere

=CONTA.SE($A$1:$F$10000;A1)>1


Il VBA offre la possibilità di vedersi rifiutare il numero.

Il codice controlla se al momento di scrivere un numero in A1:F10000 (da adattare alle proprie necessità) di qualsiasi foglio, il numero sia già presente.

Di seguito un codice trovato nel sito Microsoft da copiare nell'editor VBA in "questa cartella lavoro"



Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    
    Dim WS As Worksheet, EvalRange As Range
    
    'Scegli l'intervallo che vuoi tenere sotto controllo, attenzione a correggere
    'l'intervallo anche più in basso
    Set EvalRange = Range("A1:F10000")
    
   
    If Intersect(Target, EvalRange) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
    If IsEmpty(Target) Then Exit Sub
    
    'Se il valore immesso è già presente nell'intervallo definito nel file dove lavori, pubblica un messaggio di errore e non permettere che il numero sia processato
    
    If WorksheetFunction.CountIf(EvalRange, Target.Value) > 1 Then
        MsgBox Target.Value & " Numero già presente"
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
    End If
    
    'Fai un controllo sugli altri fogli della cartella
    
    For Each WS In Worksheets
        With WS
            If .Name <> Target.Parent.Name Then
                'Se il valore è già presente nell'intervallo che hai scelto pubblica un messaggio
                'fi errore senza che il numero sia accettatto.
                If WorksheetFunction.CountIf(Sheets(.Name).Range("A1:F10000"), Target.Value) > 0 Then
                    MsgBox Target.Value & " numero esistente nel foglio chiamato " & .Name & ".", _
                    16, "Doppioni non ammessi in " & EvalRange.Address(0, 0) & "."
                    Application.EnableEvents = False
                    Application.Undo
                    Application.EnableEvents = True
                    Exit For
                End If
            End If
        End With
    Next WS

End Sub





Spero sia d'aiuto
Attachments:
Last Edit: 8 years 2 months ago by Canapone.
The administrator has disabled public write access.

aiuto doppioni 8 years 2 months ago #7894

  • stranger88
  • stranger88's Avatar
  • OFFLINE
  • Fresh Boarder
  • Posts: 2
  • Karma: 0
ciao grazie, la formula inserita mi dice che non è valida! e poi come faccio ad attivare la macro?
The administrator has disabled public write access.

aiuto doppioni 8 years 2 months ago #7895

  • Canapone
  • Canapone's Avatar
  • OFFLINE
  • Platinum Boarder
  • Posts: 1346
  • Thank you received: 160
  • Karma: 108
Ciao,

La formula - il conta.se>1- va copiata come regola di formattazione condizionale della cella A1 e poi con copia incolla speciale estendi la formattazione condizionale dove serve.

Il codice - fai una prova su una cartella vuota- devi copiarlo dentro l'editor di Visual Basic.

Premi alt+F11 per aprire l'editor, nella finestra a sinistra in alto seleziona con doppio clic "questa cartella lavoro", sulla destra si aprirà una pagina bianca dove copiare il codice.

Il codice devi un po' modificarlo sulle tue necessità: per esempio modifica il range controllato dal codice che nell'esempio è A1:F10000. (Con il VBA sono meno che un principiante)

Alt+Q per tornare al foglio Excel.

Se alleghi un piccolo esempio sarà più facile avere risposte più "tagliate" sul tuo lavoro.

Spero sia d'aiuto
The administrator has disabled public write access.
  • Page:
  • 1
Time to create page: 0.328 seconds