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

Eliminare valore unico

Ultimo Aggiornamento: 12/09/2020 14:26
Post: 335
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
09/09/2020 11:47

Buon Mercoledi Forum , nel mio foglio allegato ,facendo una ricerca verticale partendo dalla cella K2 finendo alla cella AL500 mi servirebbe una macro che mi tiene i valori uguali se
trovati nel Range indicato e mi cancella il valore
se trovato da solo (univico).Faccio qualche esempio valore 134 presente in K2 e non presente in altre celle,questo valore la macro deve cancellarlo.Valore 101 presente in L2 e in M2 la macro deve tenere tutti e 2 i valori .Valore 904 presente in K3 ,la macro deve cancellarlo perchè unico.Valore 9826 presente in 28 celle la macro deve tenerli tutti e 28 e via via per tutti gli altri numeri.Spero di essere stato chiaro.Saluti Matteo
Post: 4.466
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
09/09/2020 12:15

Devi impostare un ciclo For Each sull’intervallo.

Poi con un If ed un CONTA.SE() lato VBA (WorksheetFunction.CountIf) valuti se il valore della cella è presente più di una volta.

Se presente una volta cancelli il contenuto della cella.

È una macro semplicissima.

Alfredo
Post: 335
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
09/09/2020 14:28


Sub cancella Univoci

Application.ScreenUpdating = False
Dim NRcX As Long, Nrc As Long, x As Long
Dim Rcr As Integer
Dim z As Integer, w As Integer, j As Integer
Dim y As Byte, k As Byte
For y = 11 To 28



Buon Giorno Alfredo grazie della indicazioni ma non ho le tue competenze per quanto riguarda Vba. Provo a partire con la macro sopra
se me la finisci potresti indicarmi passo passo le istruzioni cosi imparerei qualcosa di nuovo,ti ringrazio Matteo
Post: 4.467
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
09/09/2020 15:12

No il codice non te lo do.

Se non si studia la competenza non si forma mai (credi che son nato con il VBA in testa?)

Comincia a studiare questo link sul ciclo For Each (ma ne trovi quanti ne vuoi basta solo volerlo) e prova a scrivere qualcosa di sensato piuttosto che buttare giù del codice a casaccio giusto per far vedere.

https://macrovba.wordpress.com/tag/ciclo-for-each-next/

Mi sembra che con oltre 300 post sia quanto meno doveroso farlo.

Alfredo
Post: 336
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
09/09/2020 18:10

Sub cancellaUnivochi()
Dim setArea As Range
Dim cel As Range
setArea = Range("K2:AL500")
For Each cel In setArea
If cel.Value = " " Or cel.Value = " " Or cel.Value = " " Then
cel.EntireRow.ClearContents
End If
Next cel
End Sub

Buongiorno Alfrimpa https://macrovba.wordpress.com/tag/ciclo-for-each-next/ molto interessante non sapevo di questo sito,non voglio un codice chiavi in mano ma potresti aiutare un po di piu,non metto giù i codici a caso.Sono arrivato fino a qui ora come posso proseguire?Saluti
[Modificato da gattodimarmo1980 09/09/2020 19:15]
Post: 4.468
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
09/09/2020 21:00

Mi spieghi cosa intendevi fare con questa istruzione?

vb
If cel.Value = " " Or cel.Value = " " Or cel.Value = " " Then


E poi dove sono le istruzioni per rilevare i valori univoci? Quel WorksheetFunction.CountIf che ti ho segnalato prima?

Alfredo
Post: 337
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
10/09/2020 10:42

Sub cancellaUnivochi()
Dim setArea As Range
Dim cel As Range
setArea = Range("K2:AL500")
Dim Intervallo ("K2:AL500")
Dim Riga As Long
Set Intervallo = setArea
For Each cell IN setArea
If Application.CountIf(Intervallo, cell.Value) = 0 Then '
End if
Next
End Sub

Buon Giorno Alfredo vorrei far trovare alla macro le corrispondenze uguali e cancellare tutto il resto,da solo non riesco,
può andare bene un codice tipo cosi ovviamente ritoccandolo?Saluti
Post: 4.469
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
10/09/2020 11:27

Mi puoi spiegare istruzione per istruzione cosa intendevi fare?

Nel codice che hai postato c’è qualcosa di corretto ma anche strafalcioni da doppio frego blu.

Se non studi come puoi pensare di scrivere codice che abbia una logica ed un senso?

Alfredo
Post: 4.470
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
10/09/2020 12:34

Forse posso sembrare “cattivo” nel mio comportamento.

Però a me interessa relativamente risolvere il tuo problema.

Mi interessa molto di più che tu impari in modo da essere in grado di risolverlo da solo.

Alfredo
Post: 338
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
10/09/2020 13:25

Buon giorno Alfredo non ti ritengo Cattivo,anzi un ottimo Guru,ti seguo anche sul Web ma se vuoi aiutare inizia
a sottolineare gli errori e sottolinea le cose giuste spiegando il perchè degli errori io non ho fretta ti avere il codice in mano ne tanto meno di avere la pappa pronta.Saluti Matteo.
Post: 4.471
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
10/09/2020 13:53

Inizia tu con lo spiegare secondo quale ragionamento hai scritto le istruzioni del codice che hai postato ed io ti dirò che cosa c’è di sbagliato nel ragionamento e cosa no.

Alfredo
Post: 1.325
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
10/09/2020 14:06

Ciao a tutti
ciao Matteo,
Alfredo (un saluto [SM=g27811] )
ti ha già fornito il ragionamento al post #2.

È composto da 3 passaggi, analizzarli uno la volta, ed uno alla volta
mettili.in pratica.

DOPO e ripeto, DOPO,
assembla tutto in un'unica macro.

Ciao
Frank







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 339
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
11/09/2020 16:30

Sub MacroEliminareValoriunici()
'
' MacroEliminareValoriunici Macro
'

'
Range("K2:AL500").Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent3
.TintAndShade = 0.399945066682943
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub





Buon Giorno Alfredo buongiorno Taninom che bello rivederti dopo tanto tempo,non voglio fare di testa mia è solo una considerazione magari non vi piacerà ma è solo una considerazione ripeto,arrivato a questo punto la macro sopra che vedete,posso dire ad excel di cancellarmi tutto il resto a parte le celle formattate con testo grigio?A presto matteo
11/09/2020 17:45

Sub a()
Dim x, y, c
For x = 11 To 38
c = Cells(Rows.Count, 1).End(xlUp).Row
For y = 2 To c
If Application.WorksheetFunction.CountIf(Range("K2:AL500"), Cells(y, x)) = 1 Then Cells(y, x) = ""
Next
Next
MsgBox "fatto"
End Sub
Post: 340
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
11/09/2020 17:52

Buona giornata ABCDEF@Excel,ho provato la tua macro ma alla fine mi arriva il messaggio "fatto" ma non cancella nessun valore,in attesa di una tua eventuale modifica ti ringrazio Matteo
11/09/2020 23:46

Per il futuro....

Sub cancellaUnivochi()
' errore ... Dim setArea As Range
Dim cel As Range
Dim Intervallo As Range '''''manca
' errore ... setArea = Range("K2:AL500")
' errore ... Dim Intervallo ("K2:AL500")
' errore ... Dim Riga As Long
' errore ... Set Intervallo = setArea
Set Intervallo = Range("K2:AL500") '''''''manca
' errore ... For Each cell IN setArea
For Each cel In Intervallo
If Application.CountIf(Intervallo, cel.Value) = 1 Then 'cel & 1
cel = "" 'manca cosa deve fare
End If
Next
Set Intervallo = Nothing '''''''manca
End Sub

Per risparmiare CPU, ad Each preferisco due cicli for = 590 celle contro 13972
Facile dire che non funziona, il motivo...l'allegato che non funziona?
Post: 341
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
12/09/2020 10:47

Ciao ABCDEF@Excel, grazie per gli errori segnalati,allego il file senza aver formattato le celle,ho messo la tua macro ma nell'eseguirla non ho nessuna cancellazione.Saluti Matteo
12/09/2020 13:05

>>> c = Cells(Rows.Count, 1).End(xlUp).Row
c = Cells(Rows.Count, x).End(xlUp).Row
Post: 342
Registrato il: 03/10/2015
Città: ALBAREDO PER SAN MARCO
Età: 44
Utente Senior
2003
OFFLINE
12/09/2020 14:26

Grazie ABCDEF@Excel del codice.Saluti e buon sabato Matteo
Vota: 15MediaObject5,00119 1
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 03:29. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com