You are here:Home-Domande su Excel VBA e MACRO-[RISOLTO] Copiare range riga in maniera random
[RISOLTO] Copiare range riga in maniera random2018-01-21T19:16:26+01:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Copiare range riga in maniera random

Taggato: 

Visualizzazione 3 filoni di risposte
  • Autore
    Post
    • bg66bg66
      Partecipante
        Post totali: 63

         

        Buon 2018 a tutti,

        vorrei:

        1) compilare il foglio di lavoro test copiando il range A:E

        2) avere la possibilità di scegliere se il test debba essere composto da domande prelevate da un foglio singolo o se frutto di un mix dei vari fogli presenti.

        In entrambi i casi deve essere rispettato il numero massimo previsto in K1 del foglio TEST

        Io sono arrivato a copiare solamente una cella per un foglio di lavoro specifico:

        >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

        Public Sub EstraiCelleDaElenco()

        Dim arr As New Collection
        Dim i As Long
        Dim IndiceCasuale As String
        Dim DA_ESTRARRE As Integer
        Dim Estratti As Integer

        DA_ESTRARRE = Sheet2.Range(“k1”)

        ‘Pulisco colonna dove estrarre i numeri
        Sheet2.Select
        Last_Row2 = Sheet2.Cells.Find(“*”, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

        If Last_Row2 > 1 Then
        Sheet2.Range(Cells(2, 1), Cells(Last_Row2, 1)).ClearContents
        End If

        ‘Individuo ultima riga non vuota dell’elenco
        MAX = Sheet1.Cells.Find(“*”, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        ‘Definisco intervallo inferiore (indice della prima riga contente i dati)
        MIN = 2  ‘é la riga del primo elemento dell’elenco

        ‘Ripeto il ciclo DO-LOOP fino a quando il numero di elementi contenuti nel vettore ‘arr’
        ‘è uguale al numero degli elementi da estrarre ‘DA_ESTRARRE
        Do Until arr.Count = DA_ESTRARRE

        ‘estraggo un numero da inserire in un vettore
        IndiceCasuale = Int((MAX – MIN + 1) * Rnd + MIN)

        ‘Se il numero fosse già presente nel vettore, non sarebbe possibile inserirlo e si genererebbe un errore.
        ‘Ottengo quindi il risultato voluto (estrazione senza ripetizione)
        ‘e faccio riprendere il ciclo
        On Error Resume Next
        arr.Add IndiceCasuale, IndiceCasuale

        Loop

        For i = 1 To arr.Count

        ‘Ricalcolo l’ultima riga vuota del foglio in cui estrarre i dati
        Last_Row2 = Sheet2.Cells.Find(“*”, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        ‘Copio nel foglio ESTRAZIONE i valori del foglio DATI
        ‘utilizzando i numeri di riga casuali estratti precedentemente ed inseriti nel vettore arr
        ‘di cui prendo gli gli elementi ‘i’ dal numero 1 all’ultimo arr.Count
        Sheet2.Cells(Last_Row2 + 1, 1) = Sheet1.Cells(arr(i), 1)

        Next

        End Sub

        <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

        https://www.dropbox.com/s/je5dyl2hnq70hjh/Crea%20TestV1.xlsm?dl=0

        Grazie per l’aiuto.

        • Questo topic è stato modificato 3 anni, 10 mesi fa da bg66bg66.
        • Questo topic è stato modificato 3 anni, 10 mesi fa da bg66bg66.
      • BySalvBySalv
        Amministratore del forum
          Post totali: 886

          Ciao bg66, vai nella sezione “Vostri Lavori” ho inserito un file per i Quiz qui

          https://www.bysal-excel.it/forums/topic/file-per-gestione-quiz-2/

          fai copia incolla delle tue domande nel foglio “Quiz” rispettando le impostazioni ed avrai il file pronto inserisci prima quelle di storia e sotto quelle dell’altra materia.

          leggiti le spiegazioni.

          Ciao By Sal  :bye:

           

           

           

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          • bg66bg66
            Partecipante
              Post totali: 63

              Ciao By Sal,

              Ho provveduto a scaricare il file per studiarlo

              Ma in ogni caso mi piacerebbe capire come modificare la macro per continuare ad imparare piccoli pezzetti di vba excel.

               

              Grazie se puoi.

              • Questa risposta è stata modificata 3 anni, 10 mesi fa da bg66bg66.
          • BySalvBySalv
            Amministratore del forum
              Post totali: 886

              Ciao ti ho inviato un messaggio, voglio anche sapere se posso chiudere il topics

              Ciao By Sal  :bye:

              Ciao By Sal (8-)
              se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            • bg66bg66
              Partecipante
                Post totali: 63

                Ciao by Sal,

                metti pure RISOLTO.

                Grazie ancora.

                 

                • Questa risposta è stata modificata 3 anni, 10 mesi fa da bg66bg66.
            Visualizzazione 3 filoni di risposte
            • Il topic ‘[RISOLTO] Copiare range riga in maniera random’ è chiuso a nuove risposte.