He recibido algunas y justificadas observaciones en relación a la nota Como convertir números en palabras en Excel en Español :
- dado el número 1250000 (un millón doscientos cincuenta mil) la función da el resultado "un millones doscientos….", en lugar de "un millón…";
- en lugar de "un millón de pesos", la función da como resultado "un millón pesos"
- el número 20 daba como resultado "veinti pesos" en lugar de "veinte pesos"
- el número 100 daba como resultado "ciento pesos" en lugar de "cien pesos"
Aquí pueden descargar la versión mejorada de la función "números a letras" (SpellNumber2).
05-05-2007: nueva corrección de la rutina (1.30 aparece ahora como "uno con treinta centavos" y no como "uno con treinta y centavos")
Y otra más. Ahora 1000000 da "un millón de pesos" y 1100000 da "un millón cien mil pesos"
Technorati Tags: MS Excel
Sugerencias y ayuda para Excel en español. Ejemplos de funciones y fórmulas, gráficos, automatización con Vba, Power Query y PowerPivot
jueves, mayo 03, 2007
lunes, abril 30, 2007
Activar y desactivar Autocompletar en Excel
Ya conocerán, o habrán notado, la funcionalidad Autocompletar de Excel. Esta funcionalidad permite llenar entradas repetidas en una columna rápidamente.
El principio es que si coinciden con una entrada existente en alguna celda de una columna determinada los primeros caracteres que se escriben en otra celda de la misma columna, Excel inserta los caracteres restantes automáticamente. Excel completa sólo aquellas entradas que contienen texto o una combinación de texto y números; entradas que contienen números, fechas u horas solamente no se completan.
A muchos usuarios de Excel esta funcionalidad les resulta más molesta que útil. Para desactivarla usamos el menú Opciones—Edición, y quitamos la marca de la opción Habilitar Autocompletar para valores de celda
De manera similar, Excel copia fórmulas que se repiten en una misma columna. Por ejemplo, en la celda B1 ponemos el número 2, luego en la celda A2 ponemos el número 1 y en la celda B2 ponemos la fórmula =A2+$B$1.
Ahora procedemos así: en la celda A3 ponemos el número 2 y en la celda B3 copiamos la fórmula de B2. En A4 ponemos el número 3 y en la celda B4 copiamos nuevamente la fórmula. En la quinta instancia, es decir, al introducir el número 5 en la celda A6 Excel copia automáticamente la fórmula en la celda B6.
Si queremos desactivar esta funcionalidad, quitamos la marca de la opción Extender formatos de lista y fórmula, en el menú Opciones—Edición
Esta funcionalidad no funciona en todos los casos y está sujeta a una serie de reglas. Para más información pueden leer la entrada en la ayuda de Microsoft. La versión en español de esta entrada es absolutamente ilegible (traducción automática).
El principio es que si coinciden con una entrada existente en alguna celda de una columna determinada los primeros caracteres que se escriben en otra celda de la misma columna, Excel inserta los caracteres restantes automáticamente. Excel completa sólo aquellas entradas que contienen texto o una combinación de texto y números; entradas que contienen números, fechas u horas solamente no se completan.
A muchos usuarios de Excel esta funcionalidad les resulta más molesta que útil. Para desactivarla usamos el menú Opciones—Edición, y quitamos la marca de la opción Habilitar Autocompletar para valores de celda
De manera similar, Excel copia fórmulas que se repiten en una misma columna. Por ejemplo, en la celda B1 ponemos el número 2, luego en la celda A2 ponemos el número 1 y en la celda B2 ponemos la fórmula =A2+$B$1.
Ahora procedemos así: en la celda A3 ponemos el número 2 y en la celda B3 copiamos la fórmula de B2. En A4 ponemos el número 3 y en la celda B4 copiamos nuevamente la fórmula. En la quinta instancia, es decir, al introducir el número 5 en la celda A6 Excel copia automáticamente la fórmula en la celda B6.
Si queremos desactivar esta funcionalidad, quitamos la marca de la opción Extender formatos de lista y fórmula, en el menú Opciones—Edición
Esta funcionalidad no funciona en todos los casos y está sujeta a una serie de reglas. Para más información pueden leer la entrada en la ayuda de Microsoft. La versión en español de esta entrada es absolutamente ilegible (traducción automática).
Technorati Tags: MS Excel
martes, abril 24, 2007
Extraer números o letras de códigos alfanuméricos en Excel
En esta nota veremos cómo extraer con Excel los números, o las letras, de códigos alfanuméricos.
Muchas empresas usan códigos alfanuméricos, por ejemplo, para los números de catálogo, como por ejemplo 123ABC. A veces se presenta la necesidad de aislar la parte numérica o las letras de estos códigos.
En la primera parte de esta nota veremos una solución con fórmulas Excel, útil para los casos en los que las cifras y las letras están agrupadas.
En la segunda parte veremos una solución con una UDF (función definida por el usuario) para los casos en los que no hay agrupación de cifras y letras (por ejemplo, 12A3BC).
Solución con fórmulas (cifras y letras agrupadas)
Fuente: Extracting numbers from alphanumeric strings
Supongamos que en la celda A1 de nuestra hoja de Excel tenemos el código ABC123. Nuestra tarea es extraer, con fórmulas Excel, la parte numérica, es decir, 123.
Como los números y las letras están agrupados, nuestra fórmula deberá hacer lo siguiente:
1 – descomponer el código en sus componentes
Esto lo hacemos combinando las funciones EXTRAER y FILA de la siguiente manera
=EXTRAE(A1;FILA($1:$7);1)
Esta fórmula descompone el codigo ABC123 y pone cada uno de sus componentes en una matriz virtual definida por la función FILA. En este ejemplo FILA define 7 filas, pero podemos agregar más en caso de ser necesario.
2- determinar si hay un número en el código
Para esto combinamos la función ESNUMERO en la fórmula anterior
=ESNUMERO(1*EXTRAE(A1;FILA($1:$7);1))
Esta fórmula genera una matriz de valores VERDADERO y FALSO.
Al usar EXTRAE los números son convertidos en texto, por lo tanto tenemos que multiplicar la expresión por 1 para forzar la conversión nuevamente a números.
3 – encontrar la posición del primer número (dígito) en el código
Para esto usamos la función COINCIDIR de la siguiente manera:
=COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$7);1));0)
Ésta es una función matricial y debe ser introducida pulsando simultáneamente Ctrl+Mayúsculas+Enter
4 – contar cuántos números hay en el código
Finalmente necesitamos contar cuantas cifras componen la parte numérica del código, lo que hacemos con la función CONTAR
={CONTAR(1*EXTRAE(A1;FILA($1:$8);1))}
Ahora combinamos todo junto en esta fórmula matricial
=EXTRAE(A1;COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$8);1));0);CONTAR(1*EXTRAE(A1;FILA($1:$8);1)))
Si queremos extraer las letras tenemos que modificar la fórmula
- cambiando el argumento VERDADERO en la fórmula a FALSO
- agregando la función LARGO para calcular la cantidad de letras a extraer, reatando de ella la función CONTAR
=EXTRAE(A1;COINCIDIR(FALSO;ESNUMERO(1*EXTRAE(A1;FILA($1:$9);1));0);LARGO(A1)-CONTAR(1*EXTRAE(A1;FILA($1:$9);1)))
En hoja 1 del cuaderno con el ejemplo podemos ver los distintos casos.
Solución con UDF (función definida por el usuario)
Cuando las letras y las cifras no están agrupadas en el código, el resultado de las fórmulas es incorrecto. Para esos casos, podemos escribir una función definida por el usuario.
En un módulo del editor de Vba escribimos este código
Function ext_num_let(celda As Range, tipo As Boolean)
Dim iX As Integer, resultado As String, temp As String
Select Case tipo
Case 1
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
Case Else
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If Not IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
End Select
ext_num_let = resultado
End Function
Esta función usa dos argumentos:
- Celda: la celda que contiene el código
- Tipo: 1 para extraer cifras, 0 para extraer letras
Technorati Tags: MS Excel
Muchas empresas usan códigos alfanuméricos, por ejemplo, para los números de catálogo, como por ejemplo 123ABC. A veces se presenta la necesidad de aislar la parte numérica o las letras de estos códigos.
Actualización: Power Query nos permite hacer la tarea con más facilidad. Ver este post.
En la primera parte de esta nota veremos una solución con fórmulas Excel, útil para los casos en los que las cifras y las letras están agrupadas.
En la segunda parte veremos una solución con una UDF (función definida por el usuario) para los casos en los que no hay agrupación de cifras y letras (por ejemplo, 12A3BC).
Solución con fórmulas (cifras y letras agrupadas)
Fuente: Extracting numbers from alphanumeric strings
Supongamos que en la celda A1 de nuestra hoja de Excel tenemos el código ABC123. Nuestra tarea es extraer, con fórmulas Excel, la parte numérica, es decir, 123.
Como los números y las letras están agrupados, nuestra fórmula deberá hacer lo siguiente:
1 – descomponer el código en sus componentes
Esto lo hacemos combinando las funciones EXTRAER y FILA de la siguiente manera
=EXTRAE(A1;FILA($1:$7);1)
Esta fórmula descompone el codigo ABC123 y pone cada uno de sus componentes en una matriz virtual definida por la función FILA. En este ejemplo FILA define 7 filas, pero podemos agregar más en caso de ser necesario.
2- determinar si hay un número en el código
Para esto combinamos la función ESNUMERO en la fórmula anterior
=ESNUMERO(1*EXTRAE(A1;FILA($1:$7);1))
Esta fórmula genera una matriz de valores VERDADERO y FALSO.
Al usar EXTRAE los números son convertidos en texto, por lo tanto tenemos que multiplicar la expresión por 1 para forzar la conversión nuevamente a números.
3 – encontrar la posición del primer número (dígito) en el código
Para esto usamos la función COINCIDIR de la siguiente manera:
=COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$7);1));0)
Ésta es una función matricial y debe ser introducida pulsando simultáneamente Ctrl+Mayúsculas+Enter
4 – contar cuántos números hay en el código
Finalmente necesitamos contar cuantas cifras componen la parte numérica del código, lo que hacemos con la función CONTAR
={CONTAR(1*EXTRAE(A1;FILA($1:$8);1))}
Ahora combinamos todo junto en esta fórmula matricial
=EXTRAE(A1;COINCIDIR(VERDADERO;ESNUMERO(1*EXTRAE(A1;FILA($1:$8);1));0);CONTAR(1*EXTRAE(A1;FILA($1:$8);1)))
Si queremos extraer las letras tenemos que modificar la fórmula
- cambiando el argumento VERDADERO en la fórmula a FALSO
- agregando la función LARGO para calcular la cantidad de letras a extraer, reatando de ella la función CONTAR
=EXTRAE(A1;COINCIDIR(FALSO;ESNUMERO(1*EXTRAE(A1;FILA($1:$9);1));0);LARGO(A1)-CONTAR(1*EXTRAE(A1;FILA($1:$9);1)))
En hoja 1 del cuaderno con el ejemplo podemos ver los distintos casos.
Solución con UDF (función definida por el usuario)
Cuando las letras y las cifras no están agrupadas en el código, el resultado de las fórmulas es incorrecto. Para esos casos, podemos escribir una función definida por el usuario.
En un módulo del editor de Vba escribimos este código
Function ext_num_let(celda As Range, tipo As Boolean)
Dim iX As Integer, resultado As String, temp As String
Select Case tipo
Case 1
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
Case Else
For iX = 1 To Len(celda)
temp = Mid(celda, iX, 1)
If Not IsNumeric(temp) Then
resultado = resultado & temp
End If
Next iX
End Select
ext_num_let = resultado
End Function
Esta función usa dos argumentos:
- Celda: la celda que contiene el código
- Tipo: 1 para extraer cifras, 0 para extraer letras
Technorati Tags: MS Excel
Suscribirse a:
Entradas (Atom)