Macro para cuenta y selección de datos en celda, con condiciones

Hola Experto.

No se programar en VB pero estoy intentando crear una macro que realice lo siguiente:

1-.Seleccione un valor dentro de una columna

2-.Cuente cuantas veces se repite ese valor

3-.Me entregue el resultado en una celda

4-.en la celda contigua( del lado izquierdo) me entregue a que valor corresponde el resultado.

5-.Que la visualización del resultado sea en una tabla (excel) solo con las filas y columnas que corresponden.

Muchas Gracias de Antemano

1 Respuesta

Respuesta
1

1. ¿Qué valor va a buscar? ¿Cómo saber cuál valor seleccionar? ¿Se lo vas a capturar a la macro? ¿O lo vas a poner en una celda?

De la 2 a la 4. Sería más fácil si escribes el detalle de las ubicaciones, ¿en qué columna se va a a buscar? ¿En qué celda se va a poner el resultado? ¿En qué celda de la izquierda? ¿En cuáles celdas de la "tabla"? Hablas de 3 resultados (puntos 3,4 y 5), tendrías que poner varios ejemplos de cada resultado que esperas. Y lo más importante también debes poner ejemplos de cómo está tu información.

Saludo. Dam

Ok, entiendo tus dudas.Paso a explicarte en detalle lo que deseo hacer.

Tengo una lista con diferentes valores en la columna A (por ejemplo: S1,S2,S3,S4, etc), al leer dicha columna, quiero que me cuente cuantos valores o cuantas veces se repite cada valor (puede darse el caso que no exista o sea cero), en el caso que exista, quiero que por ejemplo en la celda C1 me indique el valor total de S1 que encontró y en la celda B1 que identifique el nombre del valor, o sea, por ejemplo

Celda B2 Celda C2

S1 5

S2 3

S4 2

Ahora, el punto esta en que quiero que vaya colocando los otros valores que estén repetidos o cuyo conteo sea mayor que Cero (valor >0) descendiendo en estas columnas, y los que no existen simplemente que no los tome en cuenta.

En el ejemplo que te doy, si S3 no existe, simplemente no aparece en la tabla.

Espero me hayas entendido. Sino, sin problemas intento explicarte mas detalles.

Muchas Gracias

Disculpa, pero sigo sin entender, ya me explicaste toda la teoría, puedes poner los ejemplos de cómo tienes la información y qué resultados esperas.

En la celda "B2" tienes esto: "S1S2S4", ¿tienes todo en una celda?

¿Y los números 5,3,2 en la celda "C2" a qué se refieren?

¿Y la macro qué quieres que haga?

Saludos. Dam

Columna B ColumnaC
S1 5
S2 3
S4 2

Disculpa, realmente es en las columnas, no en una sola celda

¿Los número 5,3,2 a qué se refieren?

Sería mejor si pones un ejemplo completo. De lo contrario tendría que suponer los resultados.

En tu ejemplo S1 se repite una vez, por lo tanto, en la columna debería estar un 1 y tú pusiste un 5, entonces no entiendo a qué se refiere el 5.

Quieren decir: S1 se repite 5 veces; S2 se repite 3 veces; S4 se repite 2 veces en la columna A ( en la cual se esta realizando la busqueda)

Entonces podrías poner el ejemplo para decir cómo están tus datos y qué resultado esperas

Columna A Columna C Columna D

S1 S1 5

S1 S2 3

S1 S3 2

S1

S1

S2

S2

S2

S3

S3

Te anexo una macro para lo que necesitas

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: subtotales
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub subtotales()
'por.dam
Set h1 = Sheets("Hoja1")
Set h2 = Sheets("Hoja2")
h1.Select
h1.Columns("A").Select
Selection.Sort Key1:=h1.Range("A1"), Order1:=xlAscending
da_ant = Range("A1")
j = 1
Subtotal = 0
Columns("C:D").ClearContents
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row + 1
    If da_ant = Cells(i, "A") Then
       Subtotal = Subtotal + 1
    Else
        Cells(j, "C") = da_ant
        Cells(j, "D") = Subtotal
        j = j + 1
        Subtotal = 1
        da_ant = Cells(i, "A")
    End If
Next
MsgBox "Proceso terminado", vbInformation, "SUMA"
End Sub

Prueba y me comentas

Saludos. Dam
Si es lo que necesitas.

Experto, realmente funciona a la perfección.

Muchísimas Gracias

espero poder aprender un poco de Macros, aunque no creo que llegue a ser tan Experto.

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas