Oppure

Loading
22/05/12 16:32
trittico69
È possibile creare una macro che mi cancelli tutti i nominativi in un foglio’ di excel 2003 che si chiama “usciti”, se questi nominativi risultano anche in un foglio chiamato “presenti” dello stesso file.
I nominativi sono in una sola cella composti da nome e cognome, ma anche da più nomi, separati da uno spazio tra loro, in entrambi i fogli.
i nominativi del foglio “usciti” si trovano solo nella colonna “A” fino in fondo, mentre i nominativi del foglio “presenti” si trovano nelle colonne A-E-I-M-Q-U-Y-AC-AG-AK-AO-AS-AW-BA-BE-BI-BM-BQ-BU-BY-CC-CG-CK-CO-CS-CW-DA-DE ed arrivano fino alla riga 100. in tutte e due i fogli e in tutte le colonne i nominativi iniziano dalla riga due, alla riga 1 c’è l’intestazione.
E poi se ci sono doppioni nel foglio “usciti” colonna “A” che ne resti uno solo. grazie!
aaa
22/05/12 17:40
HeDo

si è possibile.
aaa
23/05/12 11:49
trittico69
ho buttato giu questo ma ancora non lo provo cosa ne pensi?
Option Explicit

Function EliminaDoppioni()
Dim Area, cl
Dim c As Long, r As Long, n As Integer
Dim myColonna

myColonna = 50 '

With Sheets("usciti";)
Set Area = .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
End With


With Sheets("presenti";)
For r = 2 To 100
For c = 1 To 109 Step 4
For Each cl In Area
If .Cells(r, c) <> "" And .Cells(r, c) = cl.Value Then
Sheets("usciti";).Cells(cl.Row, cl.Column).Clear
n = n + 1
End If
Next
Next c
Next r
End With

With Sheets("usciti";)
Set Area = .Range(.Cells(1, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 1))
Area.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlGuess

.Columns(myColonna).Clear
Area.AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=.Cells(1, myColonna), Unique:=True

Application.CutCopyMode = False
.Columns(myColonna).Copy
.Range("a1";).PasteSpecial xlPasteAll
Application.CutCopyMode = False
.Columns(myColonna).Clear
End With

MsgBox "Fine elaborazione" & Chr(13) _
& "trovati e cancellati " & n & " nominativi"

End Function
aaa