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:
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.
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.
'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.
'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.
'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.
'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.
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.
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.
Así mismo, la tercera macro encuentra el valor “periodista”, fila 7 columna 3.
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.
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
Enviar un comentario
« L14. La función msgbox en VBA.
L16. Función FOR en VBA. »
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.
Hola Ricardo,
Sí se puede utilizar. Si tienes cualquier problema, abre un hilo en el foro y te echo una mano.
Saludos.
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!
Gracias por tu aporte César 😉
Saludos!
Me parece que la función FIND solo sirve para cadenas de texto.
¿Cómo buscar valores numéricos?
Gracias anticipadas
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
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.
Hola Paulo,
Me alegro mucho de que te haya servido el artículo.
Saludos.
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
Hola Fernando. Abre un hilo en el foro y sube el archivo. Estaré encantado de echarte una mano.
Saludos.
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?
Hola Francis,
Si te parece, abre un hilo en el foro y nos compartes el código para poder echarte una mano.
Saludos.
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
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.
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.
Hola Harles,
Abre un hilo en el foro y explícanos en qué consiste esa mejoría.
Saludos.
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
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.
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.
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.
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
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.
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
Hola Gustavo!
Por desgracia, la función FIND solo devuelve el valor del primer resultado encontrado, truncando la búsqueda.
Saludos.
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
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.
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.
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
Hola, muchas gracias!!!
se le podria agregar un else para que borre las que no cumplen la condicion?
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...
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?
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.
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
Hola Carlos,
Si te parece, envíame el archivo que estás trabajando a administrador@vbatotal.com y lo miro.
Saludos.
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
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
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
Hola Victor,
Una vez sepas las coordenadas i (fila) y j (columna), solo tienes que escribir:
cells(i,j).select
Saludos.
Gracias Roberto. Me alegra que te haya servido. Un saludo hasta Cuba.
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
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
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
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
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