prucommercialre.com


Los comodines en "Sustituir Con 'Texto

Anne-Mie da cuenta de que ella puede utilizar comodines (*?) Para buscar en Excel, pero se pregunta si puede utilizar comodines en la cadena de reemplazo. Por ejemplo, le gustaría buscar "ab * de" y sustituirlo por "aa * de", donde el asterisco representa cualquier número de caracteres, o ninguno en absoluto.

La respuesta corta es que no hay manera de hacer esto en Excel, como se describe. Si sólo quería convertir el segundo carácter de un valor de texto de "b" a "a", luego de que se puede hacer con bastante facilidad:

= SUSTITUIR (A1,2,1, "a")

Esto, sin embargo, probablemente no es lo que quieres hacer; quieres una manera de utilizar comodines en el texto "reemplazar con". El término técnico para hacer estas sustituciones de cuerda se llama expresiones regulares, que es la abreviatura de expresiones regulares. Regex comenzó con lenguajes como Perl, pero era tan poderoso que muchos otros lenguajes de programación añadieron sucesivamente.

La VBA utilizado en Excel no es una excepción. El primer paso para utilizar Regex es para encenderlo. Para ello, en el Editor de VBA eligiendo Herramientas | Referencias y luego asegurarse de que hay una marca de verificación junto a la opción de expresiones regulares Microsoft VBScript.

La activación de esta referencia le permite crear objetos de expresiones regulares. Estos objetos poseen un método de prueba y una propiedad del patrón. Esto significa que se establece la propiedad del patrón, y luego el método de prueba comprueba si existe el patrón. Un objeto de REGEX también tiene un método Reemplazar, que se utiliza para hacer sustituciones.

Antes de continuar, es importante entender que las expresiones regulares pueden ser muy complejas y, así, "geek". No hay manera de evitarlo; cómo trabajar con expresiones regulares ha sido tema de libros enteros. Afortunadamente, para los fines de esta punta, las expresiones son bastante simples en la naturaleza. En este caso vamos a utilizar el patrón "^ ab. * De $". Este patrón se refiere a una palabra que empiece (indicado por el ^) con "ab", seguido de una expresión arbitraria (indicado por *) que consta de al menos un carácter (indicado por el período) y terminando (indicado por la $) con " de ".

Aquí está el código que implementa el uso del objeto Regex para hacer las sustituciones reales.

Función Pública SearchNReplace1 (Patrón1 As String, _
Patrón2 como secuencia, ReplaceString As String, _
TestString As String)
Reg Dim As New RegExp

reg.IgnoreCase = True
reg.MultiLine = False
reg.Pattern = Patrón1
Si reg.Test (TestString) A continuación,
reg.Pattern = Patrón2
SearchNReplace = reg.Replace (TestString, ReplaceString)
Más
SearchNReplace = TestString
End If
End Function

Para utilizar esta macro, comenzar con las cadenas que desee cambiar en la columna A. Suponiendo que la primera cadena está en la celda A1, podría colocar el siguiente en otra celda con el fin de obtener el texto modificado:

= SearchNReplace1 ("^ ab. * De $", "^ ab", "aa", A1)

Esto le dice a la macro que el patrón que desea buscar es "^ ab. * De $" (el primer parámetro), y que desea reemplazar "^ ab" con "aa". Esta fórmula se puede pegar abajo de la columna, y se acaba con una conversión de la columna A, donde la cadena "ab * de" se sustituye por "aa * de".

Si prefiere no utilizar expresiones regex en VBA por alguna razón, entonces usted puede crear una macro que simplemente paso a través de un grupo de celdas seleccionadas y buscar cualquier célula que comienza con "ab" y termina con "de", y luego reemplaza la parte que comienza con "aa".

Sub SearchNReplace2 ()
Dim sFindInitial As String
Dim sReplaceInitial As String
Dim iLenInitial As Integer
Dim sFindFinal As String
Dim sReplaceFinal As String
Dim iLenFinal As Integer
Dim sTemp As String
Dim rCell como gama

sFindInitial = "ab"
sReplaceInitial = "aa"
sFindFinal = "de"
sReplaceFinal = "de"

Para cada selección rCell En
sTemp = rCell.Value
iLenInitial = Len (sFindInitial)
iLenFinal = Len (sFindFinal)
Si Izquierda (sTemp, iLenInitial) = sFindInitial Y _
Derecha (sTemp, iLenFinal) = sFindFinal Entonces
sTemp = mediano (sTemp, iLenInitial + 1)
sTemp = Izquierda (sTemp, Len (sTemp) - iLenFinal)
sTemp = sReplaceInitial y sTemp y sReplaceFinal
rCell.Value = sTemp
End If
Siguiente
Establecer rCell = Nothing
End Sub

Para utilizar esta rutina, sólo tiene que seleccionar las celdas que desea cambiar y, a continuación, ejecutar la macro. Usted también debe hacer cambios en el sFindInitial, sReplaceInitial, sFindFinal, y las variables sReplaceFinal, según sea necesario.

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (11170) se aplica a Microsoft Excel 2007 y 2010. Usted puede encontrar una versión de este consejo para el más viejo interfaz de menú de Excel aquí: comodines en 'Reemplazar' Texto.