Lección 15: Buscar un valor en una columna Excel (Find).

Escrito por Administrador

11 de septiembre de 2021

En esta lección vas a aprender a buscar una variable, un determinado valor o una palabra en un rango o columna de Microsoft Excel. ¡Es muy fácil, vamos allá!

En realidad, solo necesitamos saber cómo se utiliza la función Find y su sintaxis:

Set variable = Rango.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

  • what: el valor buscado.
  • after: celda después de la cual se iniciará la búsqueda. Si no se especifica se inicia en la esquina superior izquierda del rango.
  • LookIn: Para buscar dentro de fórmulas (xlFormulas), valores (xlValues) o notas (xlNotes).
  • LookAt: El valor xlPart devolverá una aparición del valor buscado cuando forme parte del valor de una celda; el valor xlWhole, en cambio, requerirá una coincidencia total.
  • SearchOrder: Para una búsqueda eficiente puedes indicar si se hace primero por filas (xlByRows) o por columnas (xlBycolumns).
  • SearchDirection: xlNext (anterior)o xlPrevious (siguiente).
  • MatchCase: Si es True la búsqueda distingue entre minúsculas y mayúsculas. El valor por defecto es False.
  • MatchByte: Solo se usa si se seleccionó o instaló la compatibilidad con idiomas de dos bytes.
  • SearchFormat: Para especificar coincidencias en formatos.

 

A continuación, vamos a ver algunos ejemplos:

Set Dato = Range("D:D").Find(codigo, LookIn:=xlValues, LookAt:=xlWhole)

Almacenamos en la variable Dato la dirección de la primera celda de la columna D que contenga todo el contenido (xlWhole) de la variable codigo.

Set Dato = Range("D1:D20").Find("ista", LookIn:=xlValues, LookAt:=xlPart)

Así, lo que hacemos es almacenar en la variable Dato la dirección de la primera celda del rango D1-D20 cuyo contenido contenga (xlPart) la cadena de texto “ista”.

La mejor forma de entender el funcionamiento y las posibilidades que tiene esta función es con una serie de ejemplos prácticos que veremos a continuación, en los que vamos a buscar un valor en un rango o columna de Excel.

En primer lugar, crea un nuevo libro, abre el editor VBA e inserta 4 módulos. Después, copia en ellos las siguientes macros.

 

Macro 1. Buscar cadenas de texto en una columna.

Sub Leccion15_1()

'Macro que busca en la columna C la cadena de texto "Periodista"

Set dato = Range("C:C").Find("Periodista", LookIn:=xlValues, LookAt:=xlWhole)

'Guardamos en la variable fila, el valor de la fila de Dato

fila = dato.Row  

'Guardamos en la variable columna, el valor de la columna de Dato                                                                  

columna = dato.Column      

'Mostramos en una ventana de texto el valor de la fila y columna                                                        

MsgBox "Fila: " & fila & " Columna: " & columna                                       

End Sub

Macro 2. Buscar cadenas de texto hacia abajo en una columna desde una celda determinada.

Sub Leccion15_2()

'Macro que busca en la columna C la cadena de texto "ista" desde la celda C8 hacia abajo

Set dato = Range("C:C").Find("ista", LookIn:=xlValues, LookAt:=xlPart, after:=Cells(8, 3), searchdirection:=xlNext)

'Guardamos en la variable fila, el valor de la fila de Dato

fila = dato.Row         

'Guardamos en la variable columna, el valor de la columna de Dato                                                    

columna = dato.Column 

'Mostramos en una ventana de texto el valor de la fila y columna                                                       

MsgBox "Fila: " & fila & " Columna: " & columna                                       

End Sub

Macro 3. Buscar cadenas de texto hacia arriba en una columna desde una celda determinada.

Sub Leccion15_3()

'Macro que busca en la columna C la cadena de texto "ista" desde la celda C8 hacia arriba

Set dato = Range("C:C").Find("ista", LookIn:=xlValues, LookAt:=xlPart, after:=Cells(8, 3), searchdirection:=xlPrevious)

'Guardamos en la variable fila, el valor de la fila de Dato

fila = dato.Row            

'Guardamos en la variable columna, el valor de la columna de Dato                                                    

columna = dato.Column      

'Mostramos en una ventana de texto el valor de la fila y columna                                                        

MsgBox "Fila: " & fila & " Columna: " & columna                         

End Sub

Macro 4. Buscar el valor de una variable en un rango de celdas.

Sub Leccion15_4()

'Macro que busca en el rango C2-C9 el valor de la variable profesión introducida en la celda C15

'Guardamos la profesion introducida en C15 en la variable profesion

profesion = Cells(15, "C").Value   

'Buscamos la profesion en el rango C2-C9                                                                                    

Set dato = Range("C2:C9").Find(profesion, LookIn:=xlValues, LookAt:=xlWhole)            

'Si dato esta en blanco porque no se ha encontrado en la lista, entonces

If dato Is Nothing Then      

'Mostramos ventana de texto indicando que no se ha encontrado                                                                  

MsgBox "Profesión no contemplada en la lista"      

'En caso de haberse hallado en la lista,                                            

Else                  

'Guardamos en la variable fila, el valor de la fila de Dato                                                                                    

fila = dato.Row     

'Guardamos en la variable columna, el valor de la columna de Dato                                                             

columna = dato.Column      

'Mostramos en una ventana de texto el valor de la fila y columna                                                                  

MsgBox "Fila: " & fila & " Columna: " & columna                                                       

End If

End Sub

A continuación, rellena la hoja de cálculo como aparece en la figura. Para ello, tendrás que insertar cuatro botones y asignarle las macros anteriores.

Además, te dejo dos enlaces donde explico cómo configurar Microsoft Excel para el uso de macros y cómo asignar macros a botones.

total-operaciones-matematicas-macros

Como resultado, en la primera macro, buscamos en la columna C, la dirección de la celda que contiene la palabra “periodista”. Como no hemos indicado nada, lo va a hacer en dirección de arriba hacia abajo y sin distinguir mayúsculas - minúsculas.

Finalmente, se abrirá una ventana emergente que nos dirá la fila y la columna de esa celda.

total-operaciones-matematicas-macros

Igualmente, las macros 2 y 3 buscan la cadena de texto “ista” en la columna C, a partir de la celda C8.

Mientras la segunda macro lo hace en dirección hacia abajo, la tercera lo hace hacia arriba. Esto lo seleccionamos con los parámetros xlPrevious o xlNext de Searchdirection dentro del comando Find.

Como resultado, la segunda macro encontrará el valor “socorrista”, fila 9 columna 3.

total-operaciones-matematicas-macros

Así mismo, la tercera macro encuentra el valor “periodista”, fila 7 columna 3.

total-operaciones-matematicas-macros

Por último, la cuarta macro, busca en el rango C2-C9 el valor introducido por nosotros en la celda C15. Si no lo encuentra, aparecerá un aviso advirtiendo de que no se ha encontrado en el listado.

total-operaciones-matematicas-macros

En este caso hemos introducido la palabra albañil en minúsculas. Como en el comando find no hemos obligado a que coincidan mayúsculas y minúsculas, localiza la palabra en la fila 2 columna 3.

Con esto llegamos al final de la decimoquinta lección, en la que has aprendido a buscar un valor en un rango o columna de Excel usando la función Find.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Nos vemos en el próximo capítulo.

Si te ha servido y quieres donar





Descarga el archivo del ejemplo

44 Comentarios

  1. Se puede con éste método resolver lo siguiente:
    Tengo una carpeta con imágenes, y una base de donde sólo me interesa una columna en específico. Posteriormente, tengo que crear un nuevo libro donde va relacionada la columna que me interesa en el archivo anterior y las imágenes de la carpeta. Tanto las imágenes de la carpeta, como la información de la columna se pueden relacionar ya que tienen el mismo nombre.

    Responder
    • Hola Ricardo,

      Sí se puede utilizar. Si tienes cualquier problema, abre un hilo en el foro y te echo una mano.

      Saludos.

      Responder
  2. Buenas! muchas gracias por la info! Encontré una forma de solucionar el problema particular que tenía y funcionó, en vez de utilizar un for, empleé find para encontrar un valor a partir de cierto número, pero utilizando en el campo what carácteres comodines. Paso la pequeña rutina.

    NroMasAlto = Rango.Find(120 & "???", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Value

    Ejemplo, para encontrar un numero más alto a partir de 120000 hasta 120999, utilizando los carácteres "???" para identificar el primero

    Debería de tenerse la columna de datos ordenada de menor a mayor pero funciona bastante bien.

    Ah, si se quiere buscar el numero MENOR de entre la lista se cambia el campo de SearchDirection:=xlPrevious a SearchDirection:=xlNext

    Saludos!

    Responder
  3. Me parece que la función FIND solo sirve para cadenas de texto.
    ¿Cómo buscar valores numéricos?
    Gracias anticipadas

    Responder
    • Hola Manuel,

      Con FIND podemos buscar tanto cadenas de texto como números. Te dejo un ejemplo para buscar el número 234:

      Sub Leccion15_5()

      'Macro que busca en la columna D el número 234

      Set dato = Range("D:D").Find(234, LookIn:=xlValues, LookAt:=xlWhole)

      fila = dato.Row 'Guardamos en la variable fila, el valor de la fila de Dato
      columna = dato.Column 'Guardamos en la variable columna, el valor de la columna de Dato
      MsgBox "Fila: " & fila & " Columna: " & columna 'Mostramos en una ventana de texto el valor de la fila y columna

      End Sub

      Responder
  4. Buen Día, en hora buena, agradezco de antemano, su guía me a servido mucho con una actualización de análisis de valores vacíos de una columna, en una macro especifica de análisis de valores. Bendiciones.

    Responder
    • Hola Paulo,

      Me alegro mucho de que te haya servido el artículo.

      Saludos.

      Responder
  5. buen dia me podrias ayudar... tengo un buscar a la hora de buscar el codigo de un cliente ejemplo c111 lo busca perfecto... a la hora de buscar c011 me da como resultado el mismo c111

    Responder
    • Hola Fernando. Abre un hilo en el foro y sube el archivo. Estaré encantado de echarte una mano.

      Saludos.

      Responder
  6. Hola, tengo el siguiente problema, estoy utilizando Find, en una columna cuyo rango es A1-A20, para encontrar una palabra, pero si la palabra a buscar esta en A1, necesito encontrar la palabra en orden descendente y en el orden existente, se salta el A1, y no se porque. Me puedes ayudar?

    Responder
    • Hola Francis,

      Si te parece, abre un hilo en el foro y nos compartes el código para poder echarte una mano.

      Saludos.

      Responder
  7. hola , buenos dias, como seria el procedimiento para buscar la ultima fila activa de una columna que se localiza con de acuerdo con esta leccion? por ejemplo que localice la columna donde se encuetra hubicada albañil y ademas localice la ultima fila con dado de esa columna hallada

    Responder
    • Buenos días Hernan,

      El próximo post que publique será sobre cómo hacer esto, así tendrá mayor visibilidad y servirá a más gente.

      Saludos.

      Responder
  8. Buenas saludos, me llamo mucho la atencion esta pagina sobre el tema de macros, hay un codigo publicado en internet para renombrar achivos que se encuentren en una carpeta y modificar los nombres de los archivos desde una lista en excel. El codigo yo lo probe y me funciono muy bien a mis necesidades, pero yo quisiera mejorarlo, porque siempre debo estar copiando muchos datos y me gustaria hacerle una breve mejoria. Le agradeceria a cualquiera que me quiera ayudar.

    Responder
    • Hola Harles,

      Abre un hilo en el foro y explícanos en qué consiste esa mejoría.

      Saludos.

      Responder
  9. Me podrias ayudar no paro de darle vueltas y no se como hacerlo, tengo una hoja con extracciones de otra aplicación y el numero de filas siempre varia(el de columnas no)
    debo de agrupar las filas que contienen el mismo valor en una de las columnas y enviarlas en un correo y también las filas sin coincidencia, los valores por los que agrupar van desde el 1 hasta el 999999
    la parte del envío la tengo más o menos apañada, pero me esta comiendo la cabeza y no doy con la clave de como puedo filtrar y agrupar para el envío
    Había pensado en seleccionar el primer registro de la columna B2 y que busque todas las coincidencias en la misma columna y que me copie en otra hoja todas las filas en las que coincida el valor y que realice el envio, pero cuando haga la siguiente busqueda en el B3 también me va a sacar la coincidencia con el B2 y así sucesivamente por lo que no es viable
    ¿Se te ocurre como lo puedo hacer?
    Muchisimas gracias de antemano

    Responder
    • Hola Sergio,

      Deberías crear un índice que guarde la fila por la que vas realizando comparaciones. Así, solo comprobarás desde la última fila que copiaste hacia abajo y no se repetirán coincidencias.

      Si quieres, puedes abrir un hilo en el foro y colgar la hoja para que podamos echarle un vistazo.

      Saludos.

      Responder
  10. Hola yo necesito hacer algo, necesito que la información colocada en la celda G3 y la G4 (esto se colocaría por decirlo así en la hoja1), que busque en la hoja 2, en la columna C, la información de la celda G3 de la hoja 1 y en la columna A la información de la celda G4 de la hoja 1 y cuando cuando existan filas que cumplan con ambos criterios entonces que en esas filas en la columna E me ponga la palabra "ANULADO" y en la columna P y Q "", pero no se como hacer eso que busque una fila con dos criterios diferentes.

    Responder
    • Buenos días Jocelyn,

      Es sencillo, con un par de condicionales lo tienes.

      Si te parece, abre un hilo en el foro y sube tu archivo para que pueda echarte una mano y sirva de ejemplo para el resto de la comunidad.

      Saludos.

      Responder
  11. hola, si deseo buscar en 2 columnas una por nombre y a su vez en otra columna aparezca "Cancelado" salga una alerta diciendo msgbox"producto cancelado" si en la fila el producto no tiene el dato cancelado siga el recorrido que es el de cargar unas cajas de texto sustraidas de la hoja, al igual si el dato es cancelado o no se carguen los textbox solo es dar una alerta cuando el dato de la fila este cancelado saludos..

    Set I = Range("P:P").Find("Cancelado").Select
    I = ActiveCell.Address
    Set b = Range("C:C").Find(Txt_buscapro)
    If Not b Is Nothing Then

    Txt_Codpro = Cells(b.Row, b.Column - 1)
    Txt_Nompro = Cells(b.Row, b.Column)
    Cmb_Tipopro = Cells(b.Row, b.Column + 1)
    Txt_PrecioPro = Cells(b.Row, b.Column + 3)
    Txt_Observapro = Cells(b.Row, b.Column + 2)
    Cmb_Umedidapro = Cells(b.Row, b.Column + 4)
    Txt_peso = Cells(b.Row, b.Column + 5)
    Txt_mermapro = Cells(b.Row, b.Column + 6)
    ' Label33 = Cells(b.Row, b.Column + 13)

    Else
    MsgBox "No se encontró el dato", vbCritical
    Txt_buscapro = ""
    I = ""
    Txt_buscapro.SetFocus

    end if

    Responder
    • Buenos días Roberto,

      En tu caso, realizaría un bucle para controlar si el producto está cancelado, y otro bucle anidado con sus correspondientes IF para el resto de operaciones.

      Si quieres, puedes abrir un hilo en el foro y subir tu ejemplo para que pueda ayudarte.

      Saludos.

      Responder
  12. Buenas tardes.
    Gracias de verdad, por el detalle a la hora de explicar y mostrar cómo hacer usar esta función.
    Tenía una duda:
    La función FIND ¿permitiría encontrar la fila de una tabla que en una columna contiene un valor y en otra columna otro?
    Ahora estoy recorriendo la tabla y comprobando secuencialmente los valores de cada una de las columnas, y en caso de que coincidan con lo que busco, pues actualizo otras columnas de esa fila concreta. Estoy haciendo algo así

    For x = 2 To Tabla.ListRows.Count
    If Tabla.ListRows(x).Range(1) = Actividad And Tabla.ListRows(x).Range(11) = Correo Then
    'aquí hago las operaciones que necesito....
    end if
    next

    Gracias de antemano

    Responder
    • Hola Gustavo!

      Por desgracia, la función FIND solo devuelve el valor del primer resultado encontrado, truncando la búsqueda.

      Saludos.

      Responder
      • Hola de nuevo,

        Pues francamente es una pena porque podríamos tener de una sola tacada, un rango muy específico.

        No obstante, te dejo el código que he generado para poder solventar este tema de poder recorrer un rango y comprobar los valores concretos de otro criterio (en este ejemplo que necesitaba resolver).
        Espero que sirve de ayuda 🙂
        Muchas gracias de nuevo por el enorme aporte de este Blog 🙂

        '----------------------
        Dim Var1 as String
        Dim Var2 as String
        Dim ContadorVar1 as Integer
        Dim ContadorVar2 as Integer
        Dim Inicio as Integer

        ContadorVar1 = 0
        ContadorVar2 = 0

        With Tabla.DataBodyRange.Columns(1)
        Set RangoVar1 = .Find(Var1, LookIn:=xlValues, searchdirection:=xlNext)
        If Not RangoVar1 Is Nothing Then
        inicio = RangoVar1.Row
        Do
        ContadorVar1 = ContadorVar1 + 1
        Fila = RangoVar1.Row
        If RangoVar1.Columns(11) = LCase(Var2) Then 'En la columna 11 está el segundo criterio que busco
        ContadorVar2 = ContadorVar2 + 1
        With Tabla.ListRows(Fila - 1) ' menos uno porque la tabla tiene encabezado
        .Range(16) = "VALOR_QUE_NECESITO_ACTUALIZAR" ' Necesito actualizar la columna 16 cuando hay coincidencia de los dos criterios
        End With
        End If
        Set RangoVar1 = .FindNext(RangoVar1)
        Loop While inicio RangoVar1.Row 'Controlamos que no vuelva a empezar desde la primera fila de RangoVar1
        MsgBox "De " & ContadorVar1 & " registros del primer criterio " & Var1 & ", se han actualizado " & ContadorVar2 & " registros coincidentes con el segundo criterio: " & Var2"
        End If
        End With

        Responder
        • Si que es una pena, pero con este código que compartes ya has desarrollado prácticamente la funcionalidad. Sólo te faltaría parametrizarlo y tendrías tu función FIND personalizada.

          Muchas gracias a ti por tu aporte. Aquí estoy para lo que necesites.

          Saludos.

          Responder
  13. Buenos dias, veo que estan activos y necesito ayuda en una busqueda con la funcion cells.finds, ya que es la unica que encontre dentro de vba para buscar un valor dentro de otro valor aproximado.
    ejemplo: dato1: 30905486, en dato2: AEP-20220907-30905486.pdf.
    mi problema especifico es que dentro de la columna A, tengo 15 celdas como dato1, y en la columna D, tengo 100 celdas como dato2, quiero remarcar las coincidencias. pero no encuentro como hacer para que la funcion cells.find busque sobre un rango y valla bajando en la propia columna.
    aclaro que los valores pueden ser variables. hay dias que pueden ser 30 datos que hay que buscar sobre 200.

    Responder
    • Hola Emiliano,

      Prueba con el siguiente código.

      Saludos.

      Sub Buscar()

      Dim dato As String

      'Iniciamos el bucle que recorre las celdas 1-10 de la columna A

      For i = 1 To 10

      'Iniciamos un bucle anidado que recorre las celdas 1-100 de la columna D

      For k = 1 To 100

      'Coloreamos de rojo las celdas de la columna D que tengan coincidencias con la columna A

      If Cells(k, "D") Like "*" & Cells(i, "A") & "*" Then

      Cells(k, "D").Interior.ColorIndex = 3

      End If

      Next

      Next

      End Sub

      Responder
      • Hola, muchas gracias!!!
        se le podria agregar un else para que borre las que no cumplen la condicion?

        Responder
        • Si se podría, pero ese paso tendrás que realizarlo al final del proceso, ya que si lo realizas al nivel del if del bucle anidado lo más probable es que te borre todas las celdas. Date cuenta de que en la primera iteración puede haber coincidencias, pero en la segunda ya no coincidirá y te la borrará...en definitiva, tendrás una columna D solo con las últimas coincidencias.

          Por eso, lo mejor es colocar un condicional al final de las dos iteraciones, en el que le digamos que borre las celdas que no coinciden con ninguna de las búsquedas.

          No sé si me he explicado bien...

          Responder
  14. Excelente explicación muchas gracias!!! Una duda, como puedo usar find, pero en lugar de buscar en un rango de celdas quisiera buscar dentro de un arreglo (Lista), es esto posible?

    Responder
    • Hola Carlos,

      Se haría de la misma manera. Al final, la lista no deja de ser un rango de celdas. Si quieres pásame un ejemplo y lo vemos.

      Saludos.

      Responder
      • Gracias por responder!! Mira aquí un ejemplo muy simple, Estoy tomando datos de una hoja y los meto en un arreglo llamado: "Tabla", la idea es buscar información en un segundo arreglo a llamado "Tabla2". Es como un buscarv de una tabla a otra, pero quisiera hacerlo todo directamente en memoria para poder procesar grandes cantidades de datos con mayor velocidad. El problema está en la Línea marcada con asteriscos, me lanza un error de compilación de: "Calificador no válido" ¿Como puedo hacer para que la búsqueda se haga directamente en Tabla2 sin tener que ir al rango de celdas? Gracias de antemano.

        Sub Find2()

        Dim Tabla() As Variant
        Dim Tabla2() As Variant
        Dim H As Worksheet
        Set H = Sheets("Hoja1")
        Tabla = H.Range("H6:I15")
        Tabla2 = H.Range("M6:N15")

        ReDim Preserve Tabla(1 To 10, 1 To 3)

        For r = 1 To 10
        '********************
        Set dato = Tabla2.Find(Cells(5 + r, 8), LookIn:=xlValues, LookAt:=xlWhole)
        '********************
        fila = dato.Row
        columna = dato.Column
        Tabla(r, 3) = Cells(fila, columna + 1) + Tabla(r, 2)
        Next r

        H.Range("H6:J15") = Tabla

        End Sub

        Responder
  15. Buen Día, tengo una duda no se si me podes ayudar?, tengo un rango donde debo buscar todos los codigas que comienzan por 04 y extaerlos y ponerlos en una celda que me indica cual es el primero segundo tercero y asi sucesivanemte:

    0201 dato 1 dato2 dato3 dato4
    0401 0401 0420 0 0
    0310
    0420

    quedo atento a tus comentarios

    Responder
    • Buenos días Alejandro,

      Prueba con este código:

      Sub Buscar()

      'Valor de la columna donde empezamos a almacenar los datos que cumplen el criterio. En el ejemplo, columna E

      Z = 5

      'Recorremos los datos desde la fila 3 hasta la 10

      For i = 3 To 10

      'Si el valor de alguna celda empieza por 04, copiamos su valor en la fila de datos y aumentamos el contador

      If Cells(i, "B") Like "04" & "*" Then

      dato = Cells(i, "B")
      Cells(3, Z) = dato
      Z = Z + 1

      End If

      Next

      End Sub

      Buscar cadenas que empiecen por 04

      Responder
  16. Hola, muy interesante. Mi pregunta es como hacerle cuando quiero que ya que encuentre ese valor (fila y columna), se ubique en dicha celda. Es decir, que no solo encuentre donde esta, sino que posicione el cursor en la coincidencia

    Responder
    • Hola Victor,

      Una vez sepas las coordenadas i (fila) y j (columna), solo tienes que escribir:

      cells(i,j).select

      Saludos.

      Responder
  17. Gracias Roberto. Me alegra que te haya servido. Un saludo hasta Cuba.

    Responder
  18. Hermano, ahora si quedo espectacular usted es un genio, estoy muy contento y agradecido por el trabajo soy cubano y si algun dia vienes a Cuba puedes contar conmigo, un abrazo

    Responder
  19. Hola Roberto.

    Prueba este otro código 😉

    Te envío al correo el archivo Excel programado para que lo tengas.

    Saludos.

    Private Sub contar()

    'Inicializamos variables

    cuenta = 0 'Lleva la cuenta del número de veces que aparece un determinado número
    a = 2 'Fila donde se va a escribir la variable cuenta dentro de la matriz de resultados
    b = 4 'Columna donde se va a escribir la variable cuenta dentro de la matriz de resultados

    'Bucle exterior que busca la primera fila donde aparece cada número del 1 al 20

    For Z = 1 To 20

    a = 2

    For i = 2 To 501

    If Cells(i, 1) = Z Then

    For k = 1 To 20

    'Bucle interior que recorre las filas desde donde aparecen por primera vez hasta el final y contabiliza

    For j = i + 1 To 501

    If Cells(j, 1) = k Then

    cuenta = cuenta + 1

    End If

    Next j

    Cells(a, b) = cuenta

    cuenta = 0
    a = a + 1

    Next k

    GoTo final

    End If

    Next i

    final:

    b = b + 1

    Next Z

    End Sub

    Responder
  20. Brother, Muchas gracias por lo que me enviaste y estoy muy agradecido siempre me sirvio para algo pero lo que quiero es que la instruccion empiece a buscar desde la celda A1 hasta la A500 y cuando encuentre el numero 1 (Ejemplo que el numero 1 este en la celda A15) salte una celda (Ejemplo A16) y a partir de ahi (Ej A16) me totalice o agrupe en la celda D1 los numeros q siguen a continuacion o sea Ejemplo del 2 hay 25 del 3 hay 40 del 4 hay 26 y asi sucesivamente y despues cuando llegue a la celda A500 que ya totalizo todos los numeros que le siguen al 1 que vaya a la celda A1 y busque el numero 2, totalice o agrupe los que le siguen y los ponga en la celda E1 y cuando encuentre el 3 igual que los copie en la celda F1 y asi sucesivamente yo quiero tener 20 columnas con los numeros del 1 al 20 y abajo los numeros totalizados que le siguen a cada numero del 1 al 20 Ejemplo:

    A:1 .........C1..........D1..E1..F1..G1..H1..I1..J1..K1..L1..M1................................
    1 2 3 4 5 6 7 8 9 10
    5 1 ---- 20 5 6 15 9 4 21 2 16 8
    10 2 ---- 15 11 23 2 6 5.........................
    4 3 ---- 14 6 2 .............................
    19 .
    1 .
    3 .
    8 .
    14 .
    3 .
    3
    5
    8

    Responder
  21. Hola Roberto, un placer.

    Puedes intentarlo con lo siguiente. Espero que te sirva. Un saludo.

    Private Sub contar()

    'Inicializamos la variable que va a contar el número de veces que aparece cada número entre 1 y 20

    cuenta = 0

    'Bucle que recorre la columna A buscando primero el número 1, después el número 2...hasta el 20

    For Z = 1 To 20

    'Bucle anidado que recorre las primeras 500 filas de la columna A

    For i = 1 To 500

    'Si la fila contiene el número que buscamos, suma una unidad a la variable contadora

    If Cells(i, 1) = Z Then

    cuenta = cuenta + 1

    End If

    Next

    'El número de veces que aparece un número lo escribimos en la fila correspondiente, en la columna 5

    Cells(Z, 5) = cuenta
    cuenta = 0

    Next

    End Sub

    Responder
  22. Buenos dias por aca Roberto gomez desde Cuba, me gustan muchos los ejemplos, estoy empezando a programar (tengo muchas ideas en la cabeza he estudiado bastante pero no he programado nada interesante)............quiero saber como se hace lo siguiente, Ejemplo, tengo en excel desde la columna A:1 hasta la columna A:500 varios numeros aleatorios del 1 al 20 (=aleatorio.entre(1;20) me gustaria saber como buscar el numero 1 y cuando lo encuentre que me agrupe o totalice en otras celdas u hojas de ahi para abajo los demas numeros y despues que vuelva a la celda A:1 y busque el numero 2 y haga lo mismo a partir del numero siguiente. Ejemplo
    A:1
    5
    10
    4
    19
    1
    3
    8
    14
    3
    3
    5
    8

    O sea que busque el 1 u cuando lo encuentre q me ponga en algun lugar que encontro tres 3, dos 8, etc y asi sucesivamente, gracias de antemano esto puede ser en excel o en VBA

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

« L14. La función msgbox en VBA.

L16. Función FOR en VBA. »

Categorías

noviembre 2024
LMXJVSD
 123
45678910
11121314151617
18192021222324
252627282930 

Debates en el foro

Contacto