Office

  • Office 2007
  • Office
  • Tutti i forum
Domanda

Macro dati filtro

Si applica a:
Salve a tutti,
avrei bisogno di una macro per identificare ed inserire in una determinata cella il contenuto della prima riga di una determinata colonna dopo aver eseguito un filtro.
Mi spiego nello specifico:
In un foglio di lavoro in colonna ho le seguenti informazioni:
anno,mese,fornitore,trasportatore,materiale1, materiale2, materiale3 ecc. ecc.
in riga invece ho i vari anni e mesi a cui associo un trasportatore.
Ora, ho bisogno di inserire nella cella G3 il primo nome visualizzato nella colonna nr.4 del trasportatore dopo aver filtrato i dati.
Ringrazio in anticipo.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento
1 Utente aveva
questa domanda

È stato utile?

2

Voti

Risposta

La tabella da filtrare è in un foglio chiamato conferimenti, e la cella g3 si trova sullo stesso foglio.
La tabella si estende dalla cella A8 alla cella P74, ma in futuro subirà modifiche ovvero verranno aggiunte delle righe e/o colonne.
Grazie in anticipo.


Prova:

Public Sub m()
    Dim sh As Worksheet
    Dim rng As Range
    Dim a As Range
    Set sh = ThisWorkbook.Worksheets("Foglio1")
    With sh
        Set rng = .Range(.Range("A8").CurrentRegion.Address).SpecialCells(xlCellTypeVisible)
        On Error Resume Next
        If rng.Areas(1).Rows.Count > 1 Then
            .Range("G3").Value = .Range("D9").Value
        Else
            Set a = .Range(rng.Areas(2).Address)
            .Range("G3").Value = a.Cells(1, 4).Value
        End If
    End With
    Set a = Nothing
    Set rng = Nothing
    Set sh = Nothing
End Sub

 

NOTA. La tabella deve avere sopra e sotto almeno una riga vuota e a dx una colonna vuota.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Risposta

Purtroppo devo rettificare.... La macro restituisce sulla cella sempre lo stesso valore ovvero la cella D9 anche se questa non viene visualizzato dopo aver applicato il filtro....
mi spiego meglio, eseguendo un filtro vedo la riga ad esempio nr 52 ma il riferimento va sempre a pescare la riga nr 9....


Forse ho trovato una soluzione al tuo problema, ripescando un vecchio post (2005) sul newsgroup m.p.i.o.e. del grande Fernando Cinquegrani.

Nel modulo di codice del foglio dove hai la tabella da filtrare metti questo codice:

 

Private Sub Worksheet_Calculate()
    Call m
End Sub

Private Sub m()
     Dim sh As Worksheet
     Dim rng As Range
     Dim a As Range
     Set sh = ThisWorkbook.Worksheets("Foglio1")
     With sh
         Set rng = .Range(.Range("A8").CurrentRegion.Address).SpecialCells(xlCellTypeVisible)
         On Error Resume Next
         If rng.Areas(1).Rows.Count > 1 Then
             .Range("G3").Value = .Range("D9").Value
         Else
             Set a = .Range(rng.Areas(2).Address)
             .Range("G3").Value = a.Cells(1, 4).Value
         End If
     End With
     Set a = Nothing
     Set rng = Nothing
     Set sh = Nothing
 End Sub

In una cella (vedi tu quale) metti questo:

=SUBTOTALE(9;A9:INDIRETTO("A" & CELLA("Riga";INDICE(A9:A100;CONTA.VALORI(A:A)))))

La cella che contiene questa espressione può essere nascosta o trovarsi anche in un altro foglio(devi però modificarla in questo ultimo caso). Inoltre in colonna A da A8 ad An non devono esserci righe vuote e non devono esserci dati dopo An.

Qui trovi il file di esempio:

http://www.maurogsc.eu/esempiforum12/primovalorefiltro.zip

 

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Salve a tutti,
avrei bisogno di una macro per identificare ed inserire in una determinata cella il contenuto della prima riga di una determinata colonna dopo aver eseguito un filtro.
Mi spiego nello specifico:
In un foglio di lavoro in colonna ho le seguenti informazioni:
anno,mese,fornitore,trasportatore,materiale1, materiale2, materiale3 ecc. ecc.
in riga invece ho i vari anni e mesi a cui associo un trasportatore.
Ora, ho bisogno di inserire nella cella G3 il primo nome visualizzato nella colonna nr.4 del trasportatore dopo aver filtrato i dati.
Ringrazio in anticipo.
  • Dove si trova la tabella da filtrare(nome foglio e riferimenti celle)?
  • E la cella G3, si trova dove(nome foglio)?

Grazie.


 

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

La tabella da filtrare è in un foglio chiamato conferimenti, e la cella g3 si trova sullo stesso foglio.
La tabella si estende dalla cella A8 alla cella P74, ma in futuro subirà modifiche ovvero verranno aggiunte delle righe e/o colonne.
Grazie in anticipo.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

2

Voti

Risposta

La tabella da filtrare è in un foglio chiamato conferimenti, e la cella g3 si trova sullo stesso foglio.
La tabella si estende dalla cella A8 alla cella P74, ma in futuro subirà modifiche ovvero verranno aggiunte delle righe e/o colonne.
Grazie in anticipo.


Prova:

Public Sub m()
    Dim sh As Worksheet
    Dim rng As Range
    Dim a As Range
    Set sh = ThisWorkbook.Worksheets("Foglio1")
    With sh
        Set rng = .Range(.Range("A8").CurrentRegion.Address).SpecialCells(xlCellTypeVisible)
        On Error Resume Next
        If rng.Areas(1).Rows.Count > 1 Then
            .Range("G3").Value = .Range("D9").Value
        Else
            Set a = .Range(rng.Areas(2).Address)
            .Range("G3").Value = a.Cells(1, 4).Value
        End If
    End With
    Set a = Nothing
    Set rng = Nothing
    Set sh = Nothing
End Sub

 

NOTA. La tabella deve avere sopra e sotto almeno una riga vuota e a dx una colonna vuota.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Grazie mille, la macro funziona alla perfezione!!!!

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

Grazie mille, la macro funziona alla perfezione!!!!


Bene, un'altra tacca sul calcio del fucile... ;-)

Grazie per il cortese riscontro, buona giornata e buon lavoro.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Purtroppo devo rettificare.... La macro restituisce sulla cella sempre lo stesso valore ovvero la cella D9 anche se questa non viene visualizzato dopo aver applicato il filtro....
mi spiego meglio, eseguendo un filtro vedo la riga ad esempio nr 52 ma il riferimento va sempre a pescare la riga nr 9....
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

Purtroppo devo rettificare.... La macro restituisce sulla cella sempre lo stesso valore ovvero la cella D9 anche se questa non viene visualizzato dopo aver applicato il filtro....
mi spiego meglio, eseguendo un filtro vedo la riga ad esempio nr 52 ma il riferimento va sempre a pescare la riga nr 9....


Ma tu, la lanci la macro? Non abbiamo la possibilità di intercettare l'evento filtro. La macro va lanciata a parte. Puoi, ad esempio, associarle un tasto di scelta rapida.

  • ALTF+8
  • Seleziona la macro
  • Opzioni
  • Inserisci una a
  • Ok
  • Chiudi la finestra
  • Fai il filtro
  • Premi assieme CTRL+a
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Risposta

Purtroppo devo rettificare.... La macro restituisce sulla cella sempre lo stesso valore ovvero la cella D9 anche se questa non viene visualizzato dopo aver applicato il filtro....
mi spiego meglio, eseguendo un filtro vedo la riga ad esempio nr 52 ma il riferimento va sempre a pescare la riga nr 9....


Forse ho trovato una soluzione al tuo problema, ripescando un vecchio post (2005) sul newsgroup m.p.i.o.e. del grande Fernando Cinquegrani.

Nel modulo di codice del foglio dove hai la tabella da filtrare metti questo codice:

 

Private Sub Worksheet_Calculate()
    Call m
End Sub

Private Sub m()
     Dim sh As Worksheet
     Dim rng As Range
     Dim a As Range
     Set sh = ThisWorkbook.Worksheets("Foglio1")
     With sh
         Set rng = .Range(.Range("A8").CurrentRegion.Address).SpecialCells(xlCellTypeVisible)
         On Error Resume Next
         If rng.Areas(1).Rows.Count > 1 Then
             .Range("G3").Value = .Range("D9").Value
         Else
             Set a = .Range(rng.Areas(2).Address)
             .Range("G3").Value = a.Cells(1, 4).Value
         End If
     End With
     Set a = Nothing
     Set rng = Nothing
     Set sh = Nothing
 End Sub

In una cella (vedi tu quale) metti questo:

=SUBTOTALE(9;A9:INDIRETTO("A" & CELLA("Riga";INDICE(A9:A100;CONTA.VALORI(A:A)))))

La cella che contiene questa espressione può essere nascosta o trovarsi anche in un altro foglio(devi però modificarla in questo ultimo caso). Inoltre in colonna A da A8 ad An non devono esserci righe vuote e non devono esserci dati dopo An.

Qui trovi il file di esempio:

http://www.maurogsc.eu/esempiforum12/primovalorefiltro.zip

 

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

I messaggi contrassegnati come risposte non possono essere eliminati

Per eliminare questo messaggio, annulla prima il contrassegno di risposta.

Motivo per rimuovere l'inoltro


Unisci

Immetti l'ID thread del thread in cui si esegue l'unione


La risposta sarà pubblicata in un thread pubblico

Stai rispondendo a una parte pubblica di questo thread. Per rispondere in privato, fai clic su Annulla, seleziona la scheda Messaggi privati e scegli Rispondi sul messaggio privato.

Non visualizzare questo messaggio in futuro

Per segnalare un abuso, accedi o continua senza accedere

Grazie.

Segnala abuso

Tipo di abuso:

Dettagli (facoltativi):

Segnala abuso

Tipo di abuso:

Dettagli (obbligatori):
Immetti i caratteri che vedi (obbligatorio):
Digita i numeri visualizzati nell'immagine.
Riproduci l'audio e digita i numeri che ascolti.
Mostra un'altra immagine.

Accedi

Puoi accedere anche con l'account di Hotmail, Xbox Live, Messenger o msn.

Non possiedi uno di questi account?

Accesso in corso...
La pagina si aggiornerà automaticamente una volta effettuato l'accesso.
Se riscontri problemi, puoi chiudere il messaggio e riprovare a collegarti.