Excel VBA: bucle de IF (y BUSCARV (comenzando con una cadena parcial)

Excel VBA: bucle de IF (y BUSCARV (comenzando con una cadena parcial)

Buen día a una comunidad increíble,

Estoy intentando desarrollar una macro para recorrer dos matrices. A continuación se muestra un ejemplo de cómo se configuran los datos:

Los datos sin procesar se encuentran en C4:C1500

$ los datos se encuentran en D4:D1500

Los valores de cadena parciales (originalmente extraídos de datos sin procesar) se encuentran en E4:E13.

Las categorías en las que se organizarán los datos sin procesar están en F4:F13

A continuación se muestra la fórmula que armé como prueba de concepto.

=SI(BUSCARV(" * "&E4&" * ",$C$4:$C$1500,1,0)=ERROR.TYPE(#N/A),"Investigar",BUSCARV(" * "&E4&" * ", $E$4:$F$13,2,0))

Esto funciona una línea a la vez, y sólo hasta el final de las listas cortas (sin escribir una declaración anidada masiva). Estoy intentando recorrer los valores parciales y de categoría a través de los datos sin procesar para luego analizar los datos por categoría y $.

Ejemplo: Hoja1

Fila Columna C (C4:C1500) Columna D (D4:D1500) Columna E (E4:E13) Columna F (F4:F13)
3 Datos sin procesar $ Datos parciales Categoría
4 210324Sales.BobParr.UT 785.54 bobparr Ventas
5 ABCDEF.210324.VentasHelenParr.TN 214,46 HelenParr Ventas
6 DashParr.WY.RR.210324 238,56 DashParr Investigación
7 Gestión.NY.JackJackParr.210324 1.200,00 JackJackParr Gestión

Hoja2:

Filas Columna B (B4:B13) Columna C (C4:C13)
3 Categoría Total$
4 Ventas 1.000,00
5 Investigación 238,56
6 Gestión 1.200,00

A partir de ahí haré otra BUSCARV( para SUMAR(gastos encontrados en la Hoja2.

Estoy abierto a todas las sugerencias para limpiar la fórmula de prueba y estaré agradecido por todo el apoyo con VBA.

Gracias.

Richard VO

Respuesta1

No veo la necesidad de usar VBA. Si tienes Excel 365, puedes combinar las funciones FILTRO, ELEGIR COLORES y SUMA para obtener los resultados deseados. Adapte la siguiente fórmula:

=SUM(CHOOSECOLS(FILTER(Sheet1!$C$2:$F$5,Sheet1!$F$2:$F$5=Sheet2!$B3),{2}))

Baje la fórmula para llenar las otras celdas.

información relacionada