Entonces, básicamente, hice una pregunta similar a esta en 2019 y obtuve una excelente respuesta de JvdV. Puedes verlo aquí: https://stackoverflow.com/a/56467170/19386858 . Pero no puedo enviarle DM, así que les pregunto a todos.
Estoy tratando de crear una lista basada en criterios específicos (si la celda contiene "*"). PERO en lugar de usar la fila de título (fila 1), quiero usar los valores de la fila 2. Básicamente, agregué otra fila encima de mi tabla original. Entonces, lo que era la fila 1 ahora es la fila 2. JvdV me dio un UDF para poner el VBA en mi pregunta original aquí: https://stackoverflow.com/a/56467170/19386858 . ¿Alguien puede editarlo para que el texto en la fila 2 se concatene?
Básicamente, estoy tratando de hacer que Excel cree automáticamente la cuarta columna:
ABCD (1) (2) text1 Text2 Text3 List (3) Bob* Mike John* Text1; Text3 (4) Jane Lisa* Brenda* Text2; Text3Gracias
¿Necesitas resolver esto en VBA? Si tiene Excel 365, la fórmula es bastante sencilla: podría, por ejemplo, MAP la matriz, buscar un asterisco y luego TEXTJOIN el mapa resultante. Algo como esto:
=TEXTJOIN(";",TRUE, MAP(A3:C3,LAMBDA(v,IF(RIGHT(v,1)="*", INDEX($A$2:$C$2,1, COLUMN(v)),""))))Puedes probar la siguiente fórmula-
=TEXTJOIN(";",TRUE,FILTER($A$2:$C$2,ISNUMBER(SEARCH("~*",A3:C3)))) Si su versión de Excel admite la función LAMBDA() , pruebe la siguiente fórmula de una sola vez.
=BYROW(A3:C4,LAMBDA(a,TEXTJOIN(";",TRUE,FILTER($A$2:$C$2,ISNUMBER(SEARCH("~*",a))))))