Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [vb][excel] estrazione casuale dati da decidere ogni volta

    Devo fare un estrazione di numeri o stringhe della quantità che decido io ogni volta
    In un foglio excel in foglio1 ho i numeri da estrarre e in foglio2 devono esserne estratti un tot.
    Io so come estrarne ad esempio una certa percentuale, ma vorrei dare la possibilità che in una cella c'è scritto quanto ne vuoi inserire e dopo premo un pulsante e me ne estrae in modo casuale senza ripetizione quanti ne ho scritti. Solo che non ho idea di come fare.

    Questa è la macro del pulsante che sta in foglio2

    codice:
    REM ***** BASIC ***** Option VBASupport 1 Sub lavoratore() FNomi = "Sorgente" '<<<<< Foglio con i nominativi FEstraz = "Estratti" '<<<<< Foglio per le estrazioni Sheets(FNomi).Select TotNomi = Range("A65536").End(xlUp).Row - Range("Inizio").Row + 1 Sheets(FEstraz).Select Range("A:B").ClearContents For I = 1 To 5/100*TotNomi AncoRand: NumRand = Int((TotNomi) * Rnd) If Application.WorksheetFunction.CountIf(Range("A1:A1000"), NumRand) > 0 Then GoTo AncoRand Range("A65536").End(xlUp).Offset(1, 0).Value = NumRand Range("A65536").End(xlUp).Offset(3, 1).Value = Range("Inizio").Offset(NumRand, 0).Value Next I End Sub

  2. #2
    Non si capisce molto del codice inserito, postalo di nuovo questa volta scrivendo a mano i tag CODE (il pulsantino è bacato, ignora i ritorni a capo).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Questo è il codice:
    codice:
    REM  *****  BASIC  *****
    Option VBASupport 1
    
    Sub lavoratore()
        FNomi = "Sorgente"      '<<<<< Foglio con i nominativi
        FEstraz = "Estratti"    '<<<<< Foglio per le estrazioni
        Sheets(FNomi).Select
        TotNomi = Range("A65536").End(xlUp).Row - Range("Inizio").Row + 1
        Sheets(FEstraz).Select
        Range("A:B").ClearContents
        For I = 1 To 5/100*TotNomi
            AncoRand:
            NumRand = Int((TotNomi) * Rnd)
            If Application.WorksheetFunction.CountIf(Range("A1:A1000"), NumRand) > 0 Then GoTo AncoRand
            Range("A65536").End(xlUp).Offset(1, 0).Value = NumRand
            Range("A65536").End(xlUp).Offset(3, 1).Value = Range("Inizio").Offset(NumRand, 0).Value
        Next I
    End Sub

  4. #4
    ho aggiunto questo pezzo di codice che apre una userform, dove chiede quanti ne vuoi estrarre, io inserisco il numero ma vedo che se metto un numero di più di una cifra non vede la seconda cifra ma solo la prima. Come posso fare se ad esempio io voglio estrarre 100 numeri a caso?
    Sempre chiedendo con questa userform.
    codice:
    Range("A:B").ClearContents
    
    'UserForm2.Show 
    
    Dim x, messaggio, titolo 
    ' 
    messaggio = "SCRIVI IL VALORE DESIDERATO" 
    titolo = "ESTRAZIONE DATI" 
    x = InputBox(messaggio, titolo) 
    If x = "" Then Exit Sub 
    
    nestrazioni = x 
    
    
    For I = 1 To nestrazioni '5/100*TotNomi'

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.