Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cancellare nomi corrispondenti a determiante sigle

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 02/03/11 23:24

Qualcuno può aiutarmi a creare un codice che dice
Se nella colonna I c’è scritto F allora cancellare le celle corrispondenti nel caso allegato cancellare G1-H1-I1-J1
Se nella colonna I c’è scritto TR1 allora cancellare le celle corrispondenti nel caso allegato cancellare G2-H2-I2-J2
Se nella colonna I c’è scritto TR2 allora cancellare le celle corrispondenti nel caso allegato cancellare G3-H3-I3-J3
E lasciare tutte le altre colonne celle e righe uguali perché ci sono altri dati
http://uploading.com/files/8bc97811/Cartel2.rar/
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Sponsor
 

Re: cancellare nomi corrispondenti a determiante sigle

Postdi ricky53 » 03/03/11 00:36

Ciao,
ti ho risposto sull'altro forum.

Se la risposta ti soddisfa puoi riportarla anche qui.
Grazie.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare nomi corrispondenti a determiante sigle

Postdi Anthony47 » 03/03/11 00:43

In aggiunta ai sempre buoni suggerimenti di Ricky (vedi sopra)...

Da quello che scrivi faccio fatica a decodificare "la regola" da seguire, quindi me ne immagino (tra le tante possibili) una a piacere:
-se nell' area I3:I100 viene inserito il valore F si cancella G1:J1; se viene introdotto TR1 si cancella G2:J2; se viene introdotto TR2 si cancella G3:J3

Per questo puoi usare una macro del tipo
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "I3:I100"
If Application.Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
Application.EnableEvents = False
Select Case (Target.Value)
    Case "F"
    Range("G1:J1").ClearContents
    Case "TR1"
    Range("G2:J2").ClearContents
    Case "TR2"
    Range("G3:J3").ClearContents
End Select
Application.EnableEvents = True
End Sub
Tasto dx sul tab col nome foglio, scegli Visualizza codice; copia la macro e incollala nel frame di dx. In questo modo, se in I3:I100 viene digitato F, TR1 o TR2 allora le celle G1:J1, oppure G2:J2, oppure G3:J3 vengono cancellate.

Se la regola e' diversa bisognera' fare "qualche adattamento".

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 03/03/11 10:13

Option Explicit
Option Compare Text
Public RR As Integer, X As Integer

Sub Cancella_Dati_Condizionata()
RR = Range("I" & Rows.Count).End(xlUp).Row
For X = 3 To RR
If Cells(X, "I") = "F" Or Cells(X, "I") = "TR1" Or Cells(X, "I") = "TR2" Then
Range("G" & X & ":" & "J" & X).ClearContents
End If
Next X
End Sub

questo codice di ricky va bene
grazie
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 03/03/11 20:40

adesso per favore me ne servirebbe uno piu o meno simile che lavori insieme a questo ma che abbia questa funzione
se nella colonna C=D e nella colonna E=D cancella A3-B3-C3-D3-E3-F3
allego il file con qualche esempio...
io ho questo codice che ci sono tutte le combinazioni ma mi cancella l'itera riga

Codice:
r = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim Condizioni As New Collection
Condizioni.Add "F|F"
Condizioni.Add "D|D"
Condizioni.Add "TR1|TR1"
Condizioni.Add "TR2|TR2"
Condizioni.Add "OSS.|OSS."
Condizioni.Add "I.S.|I.S."
Condizioni.Add "EXD.|EXD."
Condizioni.Add "DEG.|DEG."
Condizioni.Add "DEG.|OSS."
Condizioni.Add "DEG.|EXD."
Condizioni.Add "DEG.|I.S."
Condizioni.Add "OSS.|EXD."
Condizioni.Add "OSS.|I.S."
Condizioni.Add "OSS.|DEG."
Condizioni.Add "EXD.|DEG."
Condizioni.Add "EXD.|OSS."
Condizioni.Add "EXD.|I.S."
Condizioni.Add "I.S.|EXD."
Condizioni.Add "I.S.|OSS."
Condizioni.Add "I.S.|DEG."
ReDim c(r) As Integer
Dim i, j, k, cond
Set RNG2 = Range("C3:E" & r)
For Each CL2 In RNG2
For Each cond In Condizioni
If CL2.Offset(0, 0) = Split(cond, "|")(0) And CL2.Offset(0, 2) = Split(cond, "|")(1) Then
i = i + 1
c(i) = CL2.Row
End If
Next
Next
k = i
Sheets("ARCHIVIO").Select
For i = 1 To k
ActiveSheet.Rows(c(i)).EntireRow.Delete
For j = i + 1 To k
c(j) = c(j) - 1
Next
Next


http://uploading.com/files/669aac27/Cartel2.rar/
grazie
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi Anthony47 » 03/03/11 22:56

Se la macro gia' funziona, a parte che cancella l' intera riga invece che delle sole celle A:F, allora potresti sostituire
questa
ActiveSheet.Rows(c(i)).EntireRow.Delete
con
Codice: Seleziona tutto
ActiveSheet.Range("A1:F1").Offset(c(i)-1, 0).Delete

Aanalogamente al problema precedente ho immaginato che quando dici "cancella A3-B3-C3-D3-E3-F3" intendi cancellare A-B-C-D-E-F della "riga corrente".

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cancellare nomi corrispondenti a determiante sigle

Postdi ricky53 » 04/03/11 01:25

Ciao,
ti faccio la stessa domanda già fatta nell'altro forum:
con "cancella" tu intendi
cancellare il contenuto delle celle che hai indicato ???
oppure
cancellare le celle che hai indicato ???
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 04/03/11 08:55

cancellare il contenuto
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 04/03/11 08:57

dimenticavo...mi servirebbe anche come unire i due codici quello di prima e questo
grazie!
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 04/03/11 12:58

il codice intero è questo

Codice: Seleziona tutto
Sub sta1()
Dim r As Long
Dim r1 As Long
Dim st As String
Dim cp As Long
Dim d As Long
Dim ind As Variant


Dim cl, CL2, RNG, RNG2, NOME, COGNOME ' CANCELLA I CAMBIAMENTI DI CELLA DEL CCL TR1 TR2 F D IL CODICE FINISCE DOV'è SCRITTO FINE2
r = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim Condizioni As New Collection
Condizioni.Add "F|F"
Condizioni.Add "D|D"
Condizioni.Add "TR1|TR1"
Condizioni.Add "TR2|TR2"
Condizioni.Add "OSS.|OSS."
Condizioni.Add "I.S.|I.S."
Condizioni.Add "EXD.|EXD."
Condizioni.Add "DEG.|DEG."
Condizioni.Add "DEG.|OSS."
Condizioni.Add "DEG.|EXD."
Condizioni.Add "DEG.|I.S."
Condizioni.Add "OSS.|EXD."
Condizioni.Add "OSS.|I.S."
Condizioni.Add "OSS.|DEG."
Condizioni.Add "EXD.|DEG."
Condizioni.Add "EXD.|OSS."
Condizioni.Add "EXD.|I.S."
Condizioni.Add "I.S.|EXD."
Condizioni.Add "I.S.|OSS."
Condizioni.Add "I.S.|DEG."
ReDim c(r) As Integer
Dim i, j, k, cond
Set RNG2 = Range("C3:E" & r)
For Each CL2 In RNG2
    For Each cond In Condizioni
        If CL2.Offset(0, 0) = Split(cond, "|")(0) And CL2.Offset(0, 2) = Split(cond, "|")(1) Then
        i = i + 1
        c(i) = CL2.Row
     End If
    Next
Next
k = i
Sheets("ARCHIVIO").Select
For i = 1 To k
   ActiveSheet.Range("A1:F1").Offset(c(i) - 1, 0).Delete
For j = i + 1 To k
    c(j) = c(j) - 1
   Next
Next 'FINE2


Range("A3:F" & r).Select
    Selection.Sort Key1:=Range("E3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Range("G3:J170").Select
    Selection.Sort Key1:=Range("G3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
Range("K3:N34").Select
    Selection.Sort Key1:=Range("K3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("G8").Select
Set sh1 = Worksheets("Archivio")
sh1.Activate
Application.ScreenUpdating = False
st = Cells(2, 16)
cp = Cells(2, 17)
Cells(1, 18) = Cells(Rows.Count, 5).End(xlUp).Row
r1 = Cells(1, 18)
Cells(1, 19) = Cells(Rows.Count, 7).End(xlUp).Row
Cells(1, 20) = Cells(Rows.Count, 11).End(xlUp).Row
Cells(2, 18).Select
ActiveCell.FormulaR1C1 = "=LARGE(R[-1]C:R[-1]C[2],1)"
r = Cells(2, 18)
Range(Cells(1, 18), Cells(2, 20)).ClearContents
If r1 < r Then
  If r1 = 2 Then
    Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
    Selection.Insert shift:=xlDown
    Cells(4, 5).Copy
    Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
  Else
    Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
    Selection.Insert shift:=xlDown
  End If
End If
If r1 < r Then d = r Else d = r1
Range("A3:F" & d).Select
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending
For X = 3 To d Step 2
  Range(Cells(X, 1), Cells(X, 14)).Interior.ColorIndex = 45
Next X
Range("A3:N" & r).Select 'seleziona l'area di stampa'
ind = Range("A3:N" & r).Address
ActiveSheet.PageSetup.PrintArea = ind
With ActiveSheet.PageSetup
  .PrintTitleRows = "$1:$2"
  .PrintTitleColumns = ""
End With
With ActiveSheet.PageSetup
  .LeftHeader = "Stampato in Data &D - &T   Pagine &P/&N" 'stampa data ora e numero di pagine'
  .CenterHeader = "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & _
    "&""Arial,Grassetto Corsivo""&18Direzione N.C.P. Solliciano - Firenze&""Arial,Normale""&10" & Chr(10) & _
"&""Arial,Grassetto Corsivo""&12Variazioni Celle, Nuovi Arrivi, Uscite, in Data &D" 'intestazione pagina'
  .LeftMargin = Application.InchesToPoints(0.1) 'margine sinistro della stampa'
  .RightMargin = Application.InchesToPoints(0.1) 'margine destro'
  .TopMargin = Application.InchesToPoints(1.6) 'margine alto'
  .BottomMargin = Application.InchesToPoints(0.25) 'adatta lo scritto alla pagina della stampa'
  .HeaderMargin = Application.InchesToPoints(0.1) 'abbassa o alza il titolo della pagina di stampa'
  .FooterMargin = Application.InchesToPoints(0.2) 'abbassa o alza lo scritto sotto la pagine'
  .PrintHeadings = False
  .PrintGridlines = False
  .PrintComments = xlPrintNoComments
  .CenterHorizontally = False
  .CenterVertically = False
  .Orientation = xlLandscape 'stampa in verticale...per stampare in orizzontale sostituisci con =x1portrait'
  .Draft = False
  .PaperSize = xlPaperA4 'tipo di foglio usati per la stampa'
  .FirstPageNumber = xlAutomatic
  .Order = xlDownThenOver
  .BlackAndWhite = False
  .Zoom = 100 'ingrandisce o rimpiccolisce la stampa'
  .PrintErrors = xlPrintErrorsDisplayed
End With
Application.ScreenUpdating = True
If st = "V" Then ActiveWindow.SelectedSheets.PrintPreview
If st = "S" Then ActiveWindow.SelectedSheets.PrintOut Copies:=cp
If r1 < r Then
  Range(Cells(3, 2), Cells(r, 15)).Interior.ColorIndex = 0
Else
  Range(Cells(3, 2), Cells(r1, 15)).Interior.ColorIndex = 0
End If
If r1 < r Then
Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
  Selection.Delete shift:=xlUp
End If
Cells(2, 1).Select
End Sub


come lo inserisco dentro questo secondo codice in modo corretto?

Option Explicit
Option Compare Text
Public RR As Integer, X As Integer

Codice: Seleziona tutto
Sub Cancella_Dati_Condizionata()
    RR = Range("I" & Rows.Count).End(xlUp).Row
    For X = 3 To RR
        If Cells(X, "I") = "F" Or Cells(X, "I") = "TR1" Or Cells(X, "I") = "TR2" Then
            Range("G" & X & ":" & "J" & X).ClearContents
        End If
    Next X
End Sub

grazie!
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 04/03/11 13:15

Codice: Seleziona tutto
Option Explicit
Option Compare Text
Public RR As Integer, X As Integer

Sub Cancella_Dati_Condizionata()
    RR = Range("I" & Rows.Count).End(xlUp).Row
    For X = 3 To RR
        If Cells(X, "I") = "F" Or Cells(X, "I") = "TR1" Or Cells(X, "I") = "TR2" Then
            Range("G" & X & ":" & "J" & X).ClearContents
        End If
    Next X
End Sub


avevo messo fuori codice un paio di righe
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 04/03/11 13:26

Sub sta1()
Dim r As Long
Dim r1 As Long
Dim st As String
Dim cp As Long
Dim d As Long
Dim ind As Variant
Dim rr As Long

Dim cl, CL2, RNG, RNG2, NOME, COGNOME ' CANCELLA I CAMBIAMENTI DI CELLA DEL CCL TR1 TR2 F D IL CODICE FINISCE DOV'è SCRITTO FINE2
r = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Dim Condizioni As New Collection
Condizioni.Add "F|F"
Condizioni.Add "D|D"
Condizioni.Add "TR1|TR1"
Condizioni.Add "TR2|TR2"
Condizioni.Add "OSS.|OSS."
Condizioni.Add "I.S.|I.S."
Condizioni.Add "EXD.|EXD."
Condizioni.Add "DEG.|DEG."
Condizioni.Add "DEG.|OSS."
Condizioni.Add "DEG.|EXD."
Condizioni.Add "DEG.|I.S."
Condizioni.Add "OSS.|EXD."
Condizioni.Add "OSS.|I.S."
Condizioni.Add "OSS.|DEG."
Condizioni.Add "EXD.|DEG."
Condizioni.Add "EXD.|OSS."
Condizioni.Add "EXD.|I.S."
Condizioni.Add "I.S.|EXD."
Condizioni.Add "I.S.|OSS."
Condizioni.Add "I.S.|DEG."
ReDim c(r) As Integer
Dim i, j, k, cond
Set RNG2 = Range("C3:E" & r)
For Each CL2 In RNG2
For Each cond In Condizioni
If CL2.Offset(0, 0) = Split(cond, "|")(0) And CL2.Offset(0, 2) = Split(cond, "|")(1) Then
i = i + 1
c(i) = CL2.Row
End If
Next
Next
k = i
Sheets("ARCHIVIO").Select
For i = 1 To k
ActiveSheet.Range("A1:F1").Offset(c(i) - 1, 0).Delete
For j = i + 1 To k
c(j) = c(j) - 1
Next
Next 'FINE2


rr = Range("I" & Rows.Count).End(xlUp).Row 'cancella nella colonna entrati il femminile tr1 e tr2 il codice finisce a fine 5
For X = 3 To rr
If Cells(X, "I") = "F" Or Cells(X, "I") = "TR1" Or Cells(X, "I") = "TR2" Then
Range("G" & X & ":" & "J" & X).ClearContents
End If
Next X 'fine 5


Range("A3:F" & r).Select 'ordina alfabetico colonna movimenti
Selection.Sort Key1:=Range("E3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("G3:J170").Select 'ordina alfabetico colonna entrati
Selection.Sort Key1:=Range("G3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("K3:N34").Select ' ordina alfabetico colonna usciti
Selection.Sort Key1:=Range("K3"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("G8").Select
Set sh1 = Worksheets("Archivio")
sh1.Activate
Application.ScreenUpdating = False
st = Cells(2, 16)
cp = Cells(2, 17)
Cells(1, 18) = Cells(Rows.Count, 5).End(xlUp).Row
r1 = Cells(1, 18)
Cells(1, 19) = Cells(Rows.Count, 7).End(xlUp).Row
Cells(1, 20) = Cells(Rows.Count, 11).End(xlUp).Row
Cells(2, 18).Select
ActiveCell.FormulaR1C1 = "=LARGE(R[-1]C:R[-1]C[2],1)"
r = Cells(2, 18)
Range(Cells(1, 18), Cells(2, 20)).ClearContents
If r1 < r Then
If r1 = 2 Then
Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
Selection.Insert shift:=xlDown
Cells(4, 5).Copy
Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Else
Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
Selection.Insert shift:=xlDown
End If
End If
If r1 < r Then d = r Else d = r1
Range("A3:F" & d).Select
Selection.Sort Key1:=Range("A3"), Order1:=xlAscending
For X = 3 To d Step 2
Range(Cells(X, 1), Cells(X, 14)).Interior.ColorIndex = 45
Next X
Range("A3:N" & r).Select 'seleziona l'area di stampa'
ind = Range("A3:N" & r).Address
ActiveSheet.PageSetup.PrintArea = ind
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$2"
.PrintTitleColumns = ""
End With
With ActiveSheet.PageSetup
.LeftHeader = "Stampato in Data &D - &T Pagine &P/&N" 'stampa data ora e numero di pagine'
.CenterHeader = "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & "" & Chr(10) & _
"&""Arial,Grassetto Corsivo""&18Direzione N.C.P. Solliciano - Firenze&""Arial,Normale""&10" & Chr(10) & _
"&""Arial,Grassetto Corsivo""&12Variazioni Celle, Nuovi Arrivi, Uscite, in Data &D" 'intestazione pagina'
.LeftMargin = Application.InchesToPoints(0.1) 'margine sinistro della stampa'
.RightMargin = Application.InchesToPoints(0.1) 'margine destro'
.TopMargin = Application.InchesToPoints(1.6) 'margine alto'
.BottomMargin = Application.InchesToPoints(0.25) 'adatta lo scritto alla pagina della stampa'
.HeaderMargin = Application.InchesToPoints(0.1) 'abbassa o alza il titolo della pagina di stampa'
.FooterMargin = Application.InchesToPoints(0.2) 'abbassa o alza lo scritto sotto la pagine'
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape 'stampa in verticale...per stampare in orizzontale sostituisci con =x1portrait'
.Draft = False
.PaperSize = xlPaperA4 'tipo di foglio usati per la stampa'
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100 'ingrandisce o rimpiccolisce la stampa'
.PrintErrors = xlPrintErrorsDisplayed
End With
Application.ScreenUpdating = True
If st = "V" Then ActiveWindow.SelectedSheets.PrintPreview
If st = "S" Then ActiveWindow.SelectedSheets.PrintOut Copies:=cp
If r1 < r Then
Range(Cells(3, 2), Cells(r, 15)).Interior.ColorIndex = 0
Else
Range(Cells(3, 2), Cells(r1, 15)).Interior.ColorIndex = 0
End If
If r1 < r Then
Range(Cells(r1 + 1, 1), Cells(r, 4)).Select
Selection.Delete shift:=xlUp
End If
Cells(2, 1).Select
End Sub


ho provato così...sembra funzionare se mi ci date un'occhiata!
quello in grassetto è quello che ho inserito
ed ho eliminato
Option Explicit
Option Compare Text
Public RR As Integer, X As Integer
Sub Cancella_Dati_Condizionata()
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi Anthony47 » 04/03/11 20:04

Se funziona allora (secondo la mia filosofia) e' buona cosi'...

La macro di Ricky l' hai inserita in una posizione corretta.

Public RR As Integer potrebbe servire se la variabile RR e' usata per scambiare dati con altre macro.
Option Explicit e' opzionale e serve ad avere una garanzia in piu' che non ci siano errori di battitura nei nomi delle variabili.
Dim X as integer servirebbe per impostare il tipo di dati contenuti da X, con lo scopo di ridurre l' occupazione di memoria; utile quindi nelle macro che devono girare piu' rapidamente possibile.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 05/03/11 11:13

Ok grazie…adesso mi servirebbe un ultimo codice che cancelli i nomi con tre combinazioni su quattro…allego un esempio con le coordinate giuste e tutti esempi che dovrebbero essere cancellati tranne l’ultimo perché sono uguali solo due combinazioni…. non è detto che capitino sulla stessa riga come nell’esempio
Se I3=M3 e J3=N3 e G3=K3 o H3=L3 o G3=L3 o H3=K3 allora cancella G3-H3-I3-J3-K3-L3-M3-N3
Grazie!
http://uploading.com/files/4344bcme/Cartel2.rar/
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 05/03/11 16:37

mando questo messaggio perche non avevo spuntato la casella di avviso tramite email per eventuali risposte
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 05/03/11 18:51

delle tre combinazioni i numeri o le lettere che si trovano nelle colonna I-J e M-N quelli devono essere uguali obbligatoriamente e se a questi corrisponde o il nome o il cognome uguale allora si devono cancellare
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi Anthony47 » 05/03/11 20:32

Quindi
SE Ix=Mx E Jx=Nx E Gx=Kx allora cancella da Gx a Nx
SE Ix=Mx E Jx=Nx E Hx=Lx allora cancella da Gx a Nx
Se e' cosi' allora prova questa macro:
Codice: Seleziona tutto
Sub tritt()
For I = 1 To Cells(Rows.Count, 7).End(xlUp).Row
If Cells(I, "I") = Cells(I, "M") And _
    Cells(I, "J") = Cells(I, "N") And _
    Cells(I, "G") = Cells(I, "K") Then Range("G1:N1").Offset(I - 1, 0).Clear

If Cells(I, "I") = Cells(I, "M") And _
    Cells(I, "J") = Cells(I, "N") And _
    Cells(I, "H") = Cells(I, "L") Then Range("G1:N1").Offset(I - 1, 0).Clear
Next I
End Sub


Se vuoi aggiungere le combinazioni Hx=Kx e Gx=Lx dovrai duplicare le righe If, adattando la terza riga di ogni blocco.

Ciao, fai sapere.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 05/03/11 20:55

funziona ma forse mi sono spiegato male io se sposto di una riga piu giu come nell'esempoi che allego non funziona
le righe possono capitare mischiate
http://uploading.com/files/a6m4163m/Cartel2.rar/
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41

Re: cancellare nomi corrispondenti a determiante sigle

Postdi Anthony47 » 06/03/11 01:38

Non mi e' chiaro se che quando dici "le righe possono capitare mischiate" tu intenda
a) il blocco G:J possa risultare disallineato rispetto al blocco K:N, ma mantenendo la sequenza oppure
b) vuoi proprio dire che il secondo blocco non rispecchia in nessun modo la sequenza del primo, per cui (prendendo lo spunto dal file che hai allegato) sul blocco G:J la sequenza e' MARIO11/ROSSI/F/2 e poi BRUNO/MARIO/TR1/3 mentre sul blocco K:N potrebbero capitare invertite.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cancellare nomi corrispondenti a determiante sigle

Postdi trittico69 » 06/03/11 21:29

ho risolto qui
http://archi.forumup.it/viewtopic.php?t ... orum=archi
ma è sorto un altro problema....
se qualcuno sa risolverlo!
trittico69
Utente Senior
 
Post: 487
Iscritto il: 16/08/09 18:41


Torna a Applicazioni Office Windows


Topic correlati a "cancellare nomi corrispondenti a determiante sigle":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti