Digamos que tengo una cadena larga en una celda
A: 1/2/15 perro de escuela 20/09/19
B: (3 espacios) 1/8/16 School Cat 10/10/10
Quiero capturar 1/2/15 y 1/8/16
El problema es que la primera cadena está separada por 1 espacio, la segunda cadena está separada por 3 espacios
Entonces para mi
myStringArr = Split(myString,” “)
MsgBox myStringArr(1)
myStringArr(1) = 1/2/15
Solo funciona para la primera cadena, no para la segunda cadena
¿Qué podría usar en lugar de la condición de "espacio único" para analizar la cadena y capturar la primera fecha cada vez
microsoft-excel
vba
Arrendajo
fuente
fuente
Respuestas:
Esto es bastante simple, solo si la estructura de la cadena es así.
fuente
Aquí hay una solución VBA usando Regex. La función definida por el usuario toma dos parámetros: referencia de celda y número de coincidencia. El método regex Execute devuelve todos los patrones coincidentes, y la función devuelve la coincidencia apropiada según lo solicitado (en caso de que desee devolver la segunda fecha en la cadena de entrada). La fecha coincidente se devuelve como un valor de fecha, pero esto podría modificarse para que se devuelva como una cadena eliminando la función CDate ().
Ejemplo de uso:
=ExtractDate(A1,2)
Esto devolverá la segunda fecha encontrada en la cadena en la celda A1
fuente