Autor Tema: Encontrar y contar números en columna  (Leído 5430 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

2Pac Mafia

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
Encontrar y contar números en columna
« en: Abril 24, 2016, 08:33:09 am »
Hola a todos,

lo primero saludar a todos ya que este es mi primer post en este foro. Tengo muy pocas nociones de Visual Basic pero considero que lo necesito para ejecutar una serie de instrucciones que me permitan analizar bases de datos, que siempre serán números del 0 al 36 aleatorios y distribuídos en una columna. Son permanencias del juego de la ruleta

En función de esos números aplico unas condiciones (sistemas de juego) y reviso que ocurre para llegar a unas conclusiones. Hacer eso manualmente es un infierno cuando la lista de números es de miles...

Debido a mis pocos conocimientos y aunque he navegado por Internet y he ido probando cosas me doy cuenta que el avance es muy lento con respecto al manejo del VB y que siempre me quedo bloqueado en diferentes puntos para seguir adelante y finalizar procedimientos.

Ahora, lo primero que quería automatizar es sobre una lista de números de 0 a 36 aleatoriamente, sobre cada número que me indique el número de veces que aparece un número después de ese número. Me explico con un ejemplo:
12
25
13
9
36
0
7
12
8
0
3

Quiero buscar el 0. En esta lista aparece en 2 ocasiones y quiero saber qué números salen después y cuantas veces.
En este caso sería:
Números después del 0
0 = 0 veces
1 = 0 veces
2 = 0 veces
3 = 1 vez
4 = 0 veces
5 = 0 veces
6 = 0 veces
7 = 1 vez
.
.
.
Hasta el número 36

Igualmente debería hacer lo mismo sobre los números del 1 al 36.

yokesee

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +1/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #1 en: Abril 24, 2016, 10:36:47 am »
hola como no especificaste en donde lo estabas haciendo esto para que te sirva de ayuda yo use un listbox pero podrias usar lo mismo en un listview con columnas
no soy un experto y lo acabo de hacer deprisa y corriendo así que espero no lo tengáis en cuenta

Código: [Seleccionar]
Private Sub Form_Load()
    List1.AddItem "1"
    List1.AddItem "2"
    List1.AddItem "3"
    List1.AddItem "4"
    List1.AddItem "1"
    List1.AddItem "2"
    List1.AddItem "3"
    List1.AddItem "4"
    Dim numeros(1 To 36)
    For i = 0 To List1.ListCount - 1
        If List1.List(i) > 0 And List1.List(i) <= 36 Then
            numeros(List1.List(i)) = numeros(List1.List(i)) + 1
        End If
    Next
    MsgBox numeros(1) 'aqui eliges el resultado que quieres ver o si quieres ver todos haces otro bucle for recorriendo todo el array y te los muestra
End Sub

un saludo
« última modificación: Abril 24, 2016, 10:45:16 am por yokesee »

yokesee

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +1/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #2 en: Abril 24, 2016, 10:46:27 am »
hola no pude aguantar jaja y me puse con un listview por si te sirve de ayuda
Código: [Seleccionar]
    ListView1.ListItems.Add(, , "a").SubItems(1) = "1"
    ListView1.ListItems.Add(, , "b").SubItems(1) = "2"
    ListView1.ListItems.Add(, , "c").SubItems(1) = "3"
    ListView1.ListItems.Add(, , "d").SubItems(1) = "4"
    ListView1.ListItems.Add(, , "a").SubItems(1) = "1"
    ListView1.ListItems.Add(, , "b").SubItems(1) = "2"
    ListView1.ListItems.Add(, , "c").SubItems(1) = "3"
    ListView1.ListItems.Add(, , "d").SubItems(1) = "4"
    Dim numeros(1 To 36)
    Dim valor As Integer
    For i = 1 To ListView1.ListItems.Count - 1
        valor = ListView1.ListItems.Item(i).SubItems(1)
        If valor > 0 And valor <= 36 Then
            numeros(valor) = numeros(valor) + 1
        End If
    Next
    MsgBox numeros(1)

2Pac Mafia

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #3 en: Abril 25, 2016, 05:53:00 am »
Hola,

gracias por vuestras respuestas y ayuda, lo que pasa que como os dije soy muy muy novato con este tema, entonces ahora mismo no lo entiendo muy bien.

¿Los números 1, 2 , 3 y 4 vendrían a ser un ejemplo de los números de la columna? ¿Habría que listar los números manualmente en el código como Items?

Perdonad mi ignorancia. Igualmente buscaré información sobre la instrucción esta que comentáis para intentar entenderla.

yokesee

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +1/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #4 en: Abril 25, 2016, 03:01:14 pm »
lo siento no te entendí bien lo que necesitas si lo puedes explicar mejor o pasarnos un ejemplo de lo que tienes o quieres

un saludo
« última modificación: Abril 25, 2016, 03:04:01 pm por yokesee »

2Pac Mafia

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #5 en: Abril 25, 2016, 05:07:10 pm »
Por supuesto, no hay problema. Lo explico otra vez.

Dispongo de una columna con números aleatorios que pueden ser desde el 0 hasta el 36. Pueden ser hasta miles de números.

Eso son lanzadas de bola de la ruleta francesa y necesito diseñar sistemas de juego.

Ahora estoy interesado en saber como calcular cuales son los números posteriores a cada número que sale. Pongo un ejemplo:
1
9
12
3
4
35
32
0
4
12
8
20
23
28
31
32
8
12
0

Vale, por ejemplo, de esta lista cogemos el 12 y vemos que han salido justo después los siguiente números:
Número 3 = 1 vez
Número 8 = 1 vez
Número 0 = 1 vez

Entonces hay 37 posibilidades de que salgan números diferentes después del 12, quiero saber cuales son los que más salen después de cada número, desde el 0 hasta el 36. Por ejemplo:
Después del 0:
0 = 20 veces
1 = 13 veces
2 = 12 veces
3 = 18 veces
.
.
.
36 = 10 veces

Luego lo mismo para el 1, para el 2, y así hasta el 36.

Si no me explico preguntadme de nuevo. Gracias.

yokesee

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +1/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #6 en: Abril 25, 2016, 05:28:18 pm »
hola donde tienes la columna en un listbox o en un listview o en una base de datos.
yo en este ejemplo que te hice sirve para ver que en la columna cuantas veces se repite el numero que tu quieras
Código: [Seleccionar]
Private Sub Form_Load()
    List1.AddItem "1"
    List1.AddItem "2"
    List1.AddItem "3"
    List1.AddItem "4"
    List1.AddItem "1"
    List1.AddItem "2"
    List1.AddItem "3"
    List1.AddItem "4"
    Dim numeros(1 To 36)
    For i = 0 To List1.ListCount - 1
        If List1.List(i) > 0 And List1.List(i) <= 36 Then
            numeros(List1.List(i)) = numeros(List1.List(i)) + 1
        End If
    Next
    MsgBox numeros(1) 'aqui eliges el resultado que quieres ver o si quieres ver todos haces otro bucle for recorriendo todo el array y te los muestra
End Sub

el List1.AddItem "3" es para añadir los de ejemplo en la lista
Dim numeros(1 To 36) es un array para ir contando las veces que se repite cierto numero en su posición
el bucle for lo que hace es revisa todos los valores de la columna y en el array los va sumando.
MsgBox numeros(1) esto lo que hace es te muestras las veces que se a repetido por ejemplo el numero 1.

un saludo y perdón si no entendí bien

yokesee

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +1/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #7 en: Abril 25, 2016, 05:44:02 pm »
te he echo un pequeño ejemplo
https://www.dropbox.com/s/rdwclmwp9ajxdfb/numeros%20aleatorios.rar?dl=0

un boton para ir añadiendo de uno en uno un numero aleatorio a la lista
y el otro te añadira 100 numero aleatorios
y el otro te dira las veces que se repite el numero dos por ejemplo

un saludo

2Pac Mafia

  • Bit
  • Mensajes: 4
  • Reputación: +0/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #8 en: Abril 25, 2016, 05:53:30 pm »
Lo de contar los números ya lo tengo hecho en excel.

Yo tengo los datos en una hoja excel, de hecho no sé ni lo que es un listbox o listview  :(

A lo mejor por mi falta de nociones va a ser difícil el tema. Agradezco tu interés.

yokesee

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +1/-0
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #9 en: Abril 25, 2016, 06:09:27 pm »
ha vale tu estas usando excel no vb6 hace mucho tiempo que no programo en excel y no me acuerdo muy bien.
lo siento por no poder ayudarte mejor

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Encontrar y contar números en columna
« Respuesta #10 en: Mayo 01, 2016, 08:36:44 pm »
Hola tienes que crear un array entre 0  y 36 luego recorres todas las celdas donde tienes los valores y sumas 1 en la posicion del array encontrado  y asi almacenas en ese array la cuenta por cada numero me explico?

un ejemplo donde busca los valores en la columna A y en la columna B muestra cuantas veces salio cada numero, (en la B tenes que restar un numero ya que las celdas empiezan en  1

Código: (vb) [Seleccionar]
Option Explicit
Dim MiArray(0 To 36) As Integer


Public Sub MostrarRepetiones()
    Dim i As Long
    Dim ValorCelda As Integer
   
    'limpio el array
    Erase MiArray
   
    'Recorro toda la columna "A" que es donde esta el hisotorial de numero
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 'ulima celda de la columna A
        ValorCelda = Cells(i, 1)
       
        MiArray(ValorCelda) = MiArray(ValorCelda) + 1
    Next
   
    'Ahora muestro el resultado en la columna"B"
   
    For i = 1 To 37
        Cells(i, 2).Value = MiArray(i - 1)
    Next
   
   
End Sub

cualquier duda pregunta.