Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Davide,
premettendo che utilizzo da poco excel e che conosco solo le funzioni base, ultimamente mi sono imbattuto in un problema che non so se sia possibile risolvere.
Nel mio file io inserisco tutti i dati in un foglio, vorrei chiedere se è possibile fare in modo di copiare direttamente in un altro foglio tutte le righe che hanno nella colonna G un determinato dato (es "Nicola").
Quello che vorrei ottenere alla fine è un file dove io inserisco i dati in un foglio e excel automaticamente mi copia tutti i dati di "Nicola" in un altro.
E' possibile fare questo? se si, posso avere le istruzioni su come fare ?
Prova qualcosa del genere:
- Fai clic dx sulla linguetta del foglio interessato
- Seleziona l'opzione Visualizza Codicedal****menu contestuale risultante
- Incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim destSH As Worksheet
Dim srcRng As Range, destRng As Range, rCell As Range
Dim LRow As Long
Const sFoglioDestinazione As String = "Foglio2"
Const sColonna As String = "G:G"
Const sParolaChiave As String = "Nicola"
Set srcRng = Intersect(Me.Columns(sColonna), Target)
If Not srcRng Is Nothing Then
Set destSH = ThisWorkbook.Sheets(sFoglioDestinazione)
With destSH
LRow = LastRow(destSH, .Columns("A:A"))
Set destRng = destSH.Range("A" & LRow + 1)
End With
For Each rCell In srcRng.Cells
With rCell
If UCase(.Value) = UCase(sParolaChiave) Then
.EntireRow.Copy Destination:=destRng
Set destRng = destRng.Offset(1)
End If
End With
Next rCell
End If
End Sub
'<<=========
- Alt+F11 per aprire l'editor di VBA
- Alt+IMper inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, _
Optional minRow As Long = 1)
If Rng Is Nothing Then
Set Rng = SH.Cells
End If
On Error Resume Next
LastRow = Rng.Find(What:="*", _
after:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
End Function
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel
- Salva il file con l’estensione xlsm
Ora, ogni volta che la parola Nicola venga inserito nella colonna G del primo foglio, la riga corrispondente sarà copiata nella prima riga vuota del secondo foglio.
Potresti scaricare il mio file di prova Davide20160229.xlsm a:
https://www.dropbox.com/s/8l8vm7qez00quoe/Davide20160229.xlsm?dl=0
===
Regards,
Norman