Obtener filas aleatorias

Buenas tardes y antes que nada felices fiestas, bueno la pregunta es ¿como puedo obtener un porcentaje del total de filas de una hoja excel de manera aleatoria.? Mis datos inician en la columna B2 (pues la B1 es el titulo), y que me copie las filas completas en otra hoja.

Lo he intentado pero, al crear las aleatorias incluye también B1 que en mi caso es el titulo y como contiene numero me da error.

Gracias por su tiempo.

1 Respuesta

Respuesta

Podrías mediante una macro en excel copiar los datos en una hoja que provengan de otra.

Por ejemplo lo siguiente:

dim i as integer

dim j as integer

j=1

for i=2 to 10

hoja2.cells(i,j)= hoja1.cells(i,j)

next i

Aquí copia en la hoja 2 lo que esta en la hoja 1 teniendo en cuenta que lo que esta en la hoja1 desde la fila 2 esta la información que deseamos copiar

Hernán Gracias por tu respuesta, quizá no me explique correctamente lo que necesito es esto:

A B C..D.. E..F G

en mis columnas tengo, Código, Descripción, etc hast columna G

en mis Filas tengo ##### XXXXXXX ........#..#.. #..# ...

Lo que quiero es que cuando capture el porcentaje en el userform seleccione este porcentaje del total de filas, Ejemplo:

tengo 100 filas y capturo el 10% en el userform me copie solo 10 filas en la hoja 2.

pero desde la fila A2 y que me copie el titulo de la hoja1 a la hoja2.

El código que estoy usando es este:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Worksheets("ListaProductos").Activate
If TextBox1 <> "" Then
Dim Sel() As Long, Total As Long, Filas As Long
Dim x25 As Long, Random As Long
Dim Tasa As Double
Tasa = TextBox1.Value
'TextBox1.Text = Format(Tasa, "##,##0.00")
If Tasa <= 9.5 Then
'titulo = Range("a1:g1") ..Este es el encabezado
Filas = Range("A" & Rows.Count).End(xlUp).Row
x25 = Int(Filas * Tasa) / 100
Do Until Total = x25
Random = Int((Filas * Rnd) + 1)
Total = Total + 1
Rows(Random).Copy Hoja3.Rows(Total)
'Rows(Random).Delete 'Borra el 25% de los registros
Filas = Range("A" & Rows.Count).End(xlUp).Row
Loop
'Call SumaVentas
Else
MsgBox "El porcentaje que indica es Mayor al Permitido" & Chr(13) & Chr(13) & "Limite hasta 9.5%", vbInformation, "Aviso!"
TextBox1 = ""
TextBox1.SetFocus
End If
Else
MsgBox "La Tasa a calcular debe ser Mayor al 1%", vbInformation, "Aviso Importante"
End If

Gracias por tu atención.

En primera instancia podrías utilizar algo como

dim i,j,k as integer

k=Val(Hoja1.TextBox3.Text)

En donde sobre e valor de Val(Hoja1. TextBox3.Text) se calcule el 10% lo asignas a una variable que la llamaremos x y vuelve a hacer un for que vaya desde el inicio de la filla que desees hasta la variable x y eso lo copias y lo pegas con el algoritmo que le pase antes aunque hay que tener en cuenta el incremento de las columnas para que las copie de la hoja 1 hasta la hoja 2

Es algo confuso pero hay que intentar

Éxitos

Att. Hernán Camilo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas