Modificación de las mayúsculas adecuadas (Microsoft Excel)
Como muchas personas, Kirk copia información en hojas de cálculo de Excel que se origina en otros lugares. La información que Kirk copia normalmente está toda en MAYÚSCULAS, y quiere convertirla a lo que Excel denomina «mayúsculas y minúsculas» (sólo la primera letra de cada palabra está en mayúscula). El problema es que la función de hoja de trabajo ADECUADA, que hace la conversión, no presta atención a las palabras que escribe en mayúsculas. Por lo tanto, las palabras como a, an, en, y, y con tienen un límite inicial. Kirk no quiere esas palabras (y quizás algunas otras) en mayúsculas.
Hay varias formas de abordar este problema. Una es usar una fórmula bastante larga para hacer la conversión:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( SUBSTITUTE(SUBSTITUTE(PROPER($B$13);" A ";" a "); " An ";" an ");" In ";" in ");" And ";" and "); " The ";" the ");" With ";" with ")
Recuerde, todo esto es una fórmula única. Realiza la conversión de mayúsculas y minúsculas, pero luego sustituye las palabras en minúscula deseadas (a, an, in, y, the, with). Si bien esto es relativamente fácil, la utilidad de la fórmula se vuelve limitada a medida que aumenta el número de palabras para las que se deben realizar sustituciones.
Quizás un mejor enfoque es utilizar una macro de función definida por el usuario para realizar la conversión de casos por usted. La siguiente función busca algunas palabras comunes que no deberían tener mayúsculas, asegurándose de que estén en minúsculas.
Function MyProper(str As String) Dim vExclude Dim i As Integer vExclude = Array("a", "an", "in", "and", _ "the", "with", "is", "at") Application.Volatile str = StrConv(str, vbProperCase) For i = LBound(vExclude) To UBound(vExclude) str = Application.WorksheetFunction. _ Substitute(str, " " & _ StrConv(vExclude(i), vbProperCase) _ & " ", " " & vExclude(i) & " ") Next MyProper = str End Function
Se pueden agregar palabras a la matriz y el código detecta automáticamente las adiciones y verifica esas palabras agregadas. Observe también que el código agrega un espacio antes y después de cada palabra en la matriz a medida que realiza su verificación. Esto es para que el código no realice cambios en palabras parciales (como «y» dentro de «stand») o en palabras al comienzo de una oración. Puede usar la función dentro de una hoja de trabajo de esta manera:
=MyProper(B7)
Este uso devuelve el texto modificado sin ajustar el texto original en B7.
Si lo prefiere, puede usar una función que tome su lista de palabras de un rango con nombre en el libro de trabajo. La siguiente función usa un rango de celdas llamado MyList, con una sola palabra por celda. Supone que esta lista está en una hoja de trabajo denominada WordList.
Function ProperSpecial(cX As Range) ' rng = target Cell Dim c As Range Dim sTemp As String sTemp = Application.WorksheetFunction.Proper(cX.Value) For Each c In Worksheets("WordList").Range("MyList") sTemp = Application.WorksheetFunction.Substitute( _ sTemp, Application.WorksheetFunction.Proper( _ " " & c.Value & " "), (" " & c.Value & " ")) Next c ProperSpecial = sTemp End Function
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (11267) se aplica a Microsoft Excel 2007 y 2010. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Modifying_Proper_Capitalization [Modificar las mayúsculas adecuadas]
.