PDA

View Full Version : [excel/VBA] due piccole richieste


Helyanwe
02-05-2008, 09:34
salve non so è è il forum giusto dove fare questa richiesta, casomai spostate avrei due piccole richieste, mi servirebbero due macro per excel, purtroppo non sono ferratissimo nel programmare, quindi se qualcuno mi aiutasse, perdendo un po di tempo gliene sarei grato.

mi servirebbe una macro che elimina le righe doppie (tutte tranne una, ovviamente). Le elimina solo se tutte le celle di una riga sono uguali a tutte le celle di un'altra riga

es(ogni numero rappresenta una cella)

123456789
123556789
234567891
123456789
234567891
123565789

in questo caso mi lascia le righe

123456789
123556789
234567891
123565789



A me basta che fa il controllo sulle prime 5 celle, cioè se il contenuto di tutte le prime 5 celle è uguale a quello delle prime 5 celle di un'altra riga ne cancella una, altrimenti la lascia...


l'altra macro che mi servirebbe, invece:

da un file tipo questo:
http://w15.easy-share.com/1700291733.html

fatto da due fogli la macro che mi serve deve trovare quali valori nel foglio2 nella colonna B hanno accanto al nome il simbolo (i) che nella colonna B del foglio 1 non hanno

cioè:

controlla colonna B foglio 2 appena trova (i) vede il nome prima lo cerca nel foglio1 colonna B e vede se ha anche questo (i) se non ce l'ha me lo segna e me lo restituisce magari in un terzo foglio, altrimenti va avanti...

se è possibile fare una cosa simile ringrazio in anticipo chi ci dedicherà qualche minuto del suo tempo (che per me sarebbe dedicarci ben più di qualche minuto :help: )

ciao e grazie

MarcoGG
04-05-2008, 08:13
mi servirebbe una macro che elimina le righe doppie (tutte tranne una, ovviamente). Le elimina solo se tutte le celle di una riga sono uguali a tutte le celle di un'altra riga

es(ogni numero rappresenta una cella)

123456789
123556789
234567891
123456789
234567891
123565789

in questo caso mi lascia le righe

123456789
123556789
234567891
123565789

A me basta che fa il controllo sulle prime 5 celle, cioè se il contenuto di tutte le prime 5 celle è uguale a quello delle prime 5 celle di un'altra riga ne cancella una, altrimenti la lascia...


Cominciamo dal primo quesito, parli di righe o colonne ?
Devi essere più chiaro...
In pratica vuoi un'operazione di "UNIQUE" su una o più colonne ??

Helyanwe
04-05-2008, 09:04
intanto grazie per l'attenzione :D ... venendo a noi, parlo di righe. Mi serve una macro che faccia il controllo su tutte le celle della riga (bhè a me serve per le prime 5 in realtà) e che elimini tutte tranne una le righe che hanno tutte le celle uguali, non solo la prima...

se ad esempio la riga 1 ha le cella a b c d e ... uguali alla riga 14 ne elimina una... se invece ha tutte le celle uguale tranne una, mettiamo ha uguali le celle a, b, c, d, f,... ma la riga e diversa, le lascia entrambe, mi servirebbe una macro che elimina le righe (tutte tranne una, ovviamente) solo se TUTTE le celle di una riga sono uguali a TUTTE le celle di un'altra riga


spero sia chiaro adesso...

grazie ancora
ciao

MarcoGG
04-05-2008, 12:06
Mi serve una macro che faccia il controllo su tutte le celle della riga (bhè a me serve per le prime 5 in realtà) e che elimini tutte tranne una le righe che hanno tutte le celle uguali, non solo la prima...


Quesito 1 OK :)
Il controllo lo faremo solo sulle prime 5 celle per ogni riga ( ABCDE ).
Crea un pulsante sul foglio che contiene la tabella dati.
Questo è il codice che va ad eseguire :

Private Sub CommandButton1_Click()

Dim i As Long
i = 0
Dim j As Long
j = 0
Dim k As Integer
k = 0
Dim fine As Long
fine = Range("A65536").End(xlUp).Row + 1
Dim test As Boolean
test = False

For i = 1 To fine
test = False
For j = i + 1 To fine
If Cells(j, 1).Value = "" Then Exit For
For k = 1 To 5
If Cells(i, k).Value = Cells(j, k).Value Then
test = True
Else
test = False
Exit For
End If
Next k
If test = True Then
Cells(j, 1).EntireRow.Delete
j = j - 1
End If
Next j
Next i

End Sub

Prova... ;)

Helyanwe
04-05-2008, 14:18
sembra funzionare, però ho un problema, non riesco a trovare la macro tra le macro del foglio.

l'ho eseguita direttamente dall'editor e per questo dico che funziona, però se vado tra le macro non compare nulla, anche se all'inizio, quando apro excel mi dice che ci sono macro, quindi c'è...

come risolvo?


per la seconda mia richiesta ho risolto, quindi ti risparmio tempo :D

Traxsung
04-05-2008, 14:28
Helyanwe, potresti postare la soluzione al secondo quesito.
Sicuramente sarai d'aiuto a molti


Traxsung

MarcoGG
04-05-2008, 14:44
sembra funzionare, però ho un problema, non riesco a trovare la macro tra le macro del foglio.

l'ho eseguita direttamente dall'editor e per questo dico che funziona, però se vado tra le macro non compare nulla, anche se all'inizio, quando apro excel mi dice che ci sono macro, quindi c'è...


Più che "sembra" direi che funziona alla grande. :D
Se hai creato il pulsante come ti ho suggerito, la macro rimane lì, nella pagina dell'editor VBA associata al foglio in cui stanno tabella dati e pulsante stesso.
Se lasci fare ad Excel, avrà creato un modulo aggiuntivo accodandolo a quelli eventualmente già esistenti...