Filtrare, copiare ed incollare dati in base a 2 condizioni.

Anonimo
2018-01-30T13:43:03+00:00

Buongiorno a tutti.

E' da molto tempo,  ( ho provato anche sulla community Inglese, ma senza risultato) che sto lavorando ad una procedura VBA per Excel che mi permetta di automatizzare le seguenti operazioni:

  1. Filtrare i dati da un Foglio MASTER (cioè principale e che contiene dati su più colonne)  applicando il Filtro alla colonna J ( la quale riporta l'indicazione di più materie es. ITALIANO-STORIA e cosi via);
  2. Ordinare i dati in ordine crescente sempre tenendo presente la stessa colonna (J);
  3. copiare un tot nr. di righe  delle materie (appena filtrate e ordinate dalla precedenti 2 routine);
  4. incollare queste ultime domande (con le intestazioni di colonna) in successione in un altro foglio;

Mi fermo qui per ora poiché nell'altro thread sono stato molto confusionario.

Io per ora, con tanto sforzo e impegno  sono riuscito a mettere su le 2 sottoriportate routine che rispecchiano i punti 1 e 2 appena descritti, non sono riuscito a comprendere come procedere oltre con i passaggi ai punti: 3 e 4

Filtro le materie inserite in un Range definito come myAge

Public Sub FiltroArray()

Dim i As Long, arr As Variant

arr = Application.Transpose(Range("myAge"))

With Sheets("Foglio1")    

    For i = LBound(arr) To UBound(arr)

        arr(i) = CStr(arr(i))

    Next i

    'to filter all values in the array at once specify xlFilterValues

    .Columns("j").AutoFilter field:=1, Criteria1:=arr, _

                             Operator:=xlFilterValues   

End With

Call OrdinaCrescente

End Sub

Ordino i dati appena filtrati in ordine crescente.

Public Sub OrdinaCrescente()

'Range da ordinare : [A1:J10000]

    Dim WS As Worksheet

    Set WS = ThisWorkbook.Worksheets("Foglio1")

    Dim R As Range

    Set R = WS.Range("A1:J10000")

    With WS.Sort

        .SortFields.Clear

        .SortFields.Add Key:=Range("J2:J10000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal      

        .SetRange R

        .Header = xlYes

        .MatchCase = False

        .Orientation = xlTopToBottom         

        .Apply

    End With

End Sub

Chiedo il vostro cortese prezioso aiuto poiché ne necessito per un mio progetto molto importante, se non sono stato chiaro per favore ditemelo, cercherò con tutte le mie forze di spiegarmi meglio e di farmi comprendere.

P.S. il file di esempio l'ho postato al seguente link: https://1drv.ms/x/s!Ali6qqOH3dOAiwYUVG\_spsABJCFt

Ringrazio come sempre chi mi aiuta in questo.

Ciao Nicola.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

5 risposte

Ordina per: Più utili
  1. Anonimo
    2018-02-01T08:05:59+00:00

    Buongiorno a tutti, ciao Norman.

    Ho scaricato il tuo file messo a disposizione dell'amico By EF, ho intuito che la selezione del numero di domande avviene in base alla Materia (indicata dal nome del Foglio ) e non in una colonna come nel caso mio.

    Ho provato a lanciare la tua routine (dopo aver selezionato i fogli riportanti le materie ed ottengo questo messaggio di errore).

    Ho tolto Option Explicit e l'errore si presenta più avanti come da seguente  immagine :

    Comunque penso che il problema oltre alla variabile non dichiarata, sia la diversa impostazione della scelta delle materie che nel caso mio avviene in colonna J e non in base ai fogli di lavoro.

    Attendo con pazienza un tuo intervento, non so proprio come modificare il tuo codice per adattarlo alle mie esigenze, aiutami tu per favore.

    Ciao Nicola

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-01-30T19:11:49+00:00

    Ciao Nicola,

    Proprio perchè avevo pubblicato questo codice, mi sembrava che fosse possibilemente superfluo continuare con il tuo thread precedente . Tuttavia, se mi sbagliavo e hai ancora bisogno di assistenza, mi scuso e sarò felice fare quello che posso per aiutarti.

    Sono sicuro che anche io senza rivolgermi altrove, con il tuo professionale e cortese aiuto spuntero' RISOLTO.  Io ti assicuro che mi sto impegnando con tutte le mie forze e conoscenze. 

    Stop!! 

    Non dubito minimamente il tuo impegno e mi sono amaramente pentito di averti costretto a lavorare così duramente.

    Tra poco vado a mangiare con gli amici ma posterò i miei suggerimenti domani.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-01-30T18:27:06+00:00

    Proprio perchè avevo pubblicato questo codice, mi sembrava che fosse possibilemente superfluo continuare con il tuo thread precedente . Tuttavia, se mi sbagliavo e hai ancora bisogno di assistenza, mi scuso e sarò felice fare quello che posso per aiutarti.

    Sono sicuro che anche io senza rivolgermi altrove, con il tuo professionale e cortese aiuto spuntero' RISOLTO.  Io ti assicuro che mi sto impegnando con tutte le mie forze e conoscenze. Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-01-30T18:23:17+00:00

    Ciao Norman, innanzitutto grazie come sempre per il tuo cortese riscontro. Non ho affatto notato e seguito ( mi è sfuggito ed è molto grave questo perché seguo ogni giorno questo bellissimo forum, non ne posso fare a meno) la tua brillante risposta alla domanda del thread che menzioni. Colgo l'occasione per rileggerlo tutto, vedo se posso adattarlo alla mia esigenza e ti aggiorno. P.S. Norman poiché fino ad oggi ho sempre avuto il massimo sostegno da voi tutti del forum e mi avete risolto problematiche più complesse di questa, ecco perché non ho voluto peregrinare altrove, lo farò quando non ci sarete più voi  ( mi  auguro mai e poi mai )ad aiutarmi. Ciao e buona serata Norman.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2018-01-30T17:00:32+00:00

    Ciao Nicola,

    E' da molto tempo,  ( ho provato anche sulla community Inglese, ma senza risultato) che sto lavorando ad una procedura VBA per Excel che mi permetta di automatizzare le seguenti operazioni:

    [...]

    Ho visto la tua domanda nel forum inglese ma non ho risposto dato il consiglio di Genevieve di spostare la domanda al forum MSDN, come suggerito tempo fa anche in questo forum.

    Sono un po' sopreso che non hai preso spunta dalla mia risposta nel seguente thread recente:

             Creare test copiando riga random

    Proprio perchè avevo pubblicato questo codice, mi sembrava che fosse possibilemente superfluo continuare con il tuo thread precedente . Tuttavia, se mi sbagliavo e hai ancora bisogno di assistenza, mi scuso e sarò felice fare quello che posso per aiutarti.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento