Cálculos de ingeniería (Microsoft Excel)
En un entorno de ingeniería, no es inusual tener que «normalizar»
números de alguna manera. Por ejemplo, es posible que deba mostrar valores numéricos normalizados a múltiplos de 10 ^ 3, de modo que 7340 se expresa como 7,34 y 73400 se expresa como 73,4.
En Excel, es posible usar un formato de número personalizado para expresar información en notación científica que normalizará la visualización de un número a un múltiplo de 10 ^ 3. Para hacer esto, deberías seguir estos pasos:
-
Seleccione las celdas que desea formatear.
-
Muestre la pestaña Inicio de la cinta.
-
Haga clic en el pequeño icono en la esquina inferior derecha del grupo Número.
Excel muestra el cuadro de diálogo Formato de celdas.
-
Asegúrese de que la pestaña Número esté seleccionada. (Ver figura 1)
-
En la lista de categorías de formato, elija Personalizado.
-
En el cuadro Tipo, ingrese ## 0.0E + 0 como su formato. (Esto proporciona solo un número a la derecha del lugar decimal. Si desea más, aumente el número de ceros después del lugar decimal).
-
Haga clic en Aceptar.
Ahora, cuando ingresa un número como 7340 en la celda, Excel lo muestra como 7.3E + 3. Debido a la forma en que se ingresó el formato de celda, la porción después de la E siempre será un múltiplo de 3.
Esto está muy bien, pero ¿qué pasa si solo desea el 7.3 en la celda y luego un prefijo métrico con una unidad en una celda contigua, como kilogramos? Esto es un poco más complejo, pero se puede hacer mediante fórmulas. Por ejemplo, supongamos que tiene su número original en la celda A2, quería el número normalizado en la celda B2 y el prefijo métrico y el nombre de la unidad en la celda C2. Todo lo que necesita hacer es ingresar la siguiente fórmula en la celda B2:
=IF(OR(A2>=1,A2<=-1),SIGN(A2)(ABS(A2)/(10^(3INT(LOG(ABS(A2))/3))))), IF(A2=0,0,SIGN(A2)(ABS(A2)10^(-3*INT(LOG(ABS(A2))/3)))))
Suponiendo que las unidades con las que está trabajando son una unidad imaginaria llamada foo, en la celda C2 usaría una fórmula diferente, como sigue:
=IF(OR(A2>=1, A2<=-1),CHOOSE(INT(LOG(ABS(A2))/3)+1, "Foos", "Kilofoos", "Megafoos", "Gigafoos", "Terafoos", "Petafoos", "Exafoos"), IF(A2=0,"",CHOOSE(INT(-LOG(ABS(A2))/3)+1, "Millifoos", "Microfoos", "Nanofoos", "Picofoos", "Femtofoos", "Attofoos")))
Estas fórmulas pueden parecer un poco largas, y lo son. Sin embargo, funcionarán para cualquier número entre aproximadamente -9.99999E-18 y 9.99999E + 20.
Por ejemplo, si pones el número .000125 en la celda A2, la celda B2 contendrá 125 y la celda C2 contendrá Millifoos.
Si prefiere no usar fórmulas más largas como estas en sus libros de trabajo, puede desarrollar un par de funciones VBA para hacer el truco.
La siguiente función, MySciNum, devuelve un número normalizado. Por lo tanto, usaría = MySciNum (A2) en la celda B2 para obtener los mismos resultados que se indicaron anteriormente:
Function MySciNum(BaseNum As Double) As Double Select Case BaseNum Case Is >= 1 While Abs(BaseNum) > 1000 BaseNum = BaseNum / 1000 Wend Case 0 'Do nothing Case Else While Abs(BaseNum) < 1 BaseNum = BaseNum * 1000 Wend End Select MySciNum = BaseNum End Function
Esta función solo devuelve un número. Para devolver las unidades con el prefijo métrico apropiado, usaría la siguiente función. Todo lo que necesita hacer es pasarle la referencia de celda y el nombre de una sola unidad.
Por ejemplo, puede usar = MySciPre (A2, «foo»). La macro es la siguiente:
Function MySciPre(BaseNum As Double, Unit As String) As String Dim OrigNum As Double Dim Pref As Integer Dim Temp As String Pref = 0 OrigNum = BaseNum Select Case BaseNum Case Is >= 1 While Abs(BaseNum) > 1000 BaseNum = BaseNum / 1000 Pref = Pref + 1 Wend Case 0 Pref = 99 Case Else While Abs(BaseNum) < 1 BaseNum = BaseNum * 1000 Pref = Pref - 1 Wend End Select Select Case Pref Case -6 Temp = "atto" & Unit Case -5 Temp = "femto" & Unit Case -4 Temp = "pico" & Unit Case -3 Temp = "nano" & Unit Case -2 Temp = "micro" & Unit Case -1 Temp = "milli" & Unit Case 0 Temp = Unit Case 1 Temp = "kilo" & Unit Case 2 Temp = "mega" & Unit Case 3 Temp = "giga" & Unit Case 4 Temp = "tera" & Unit Case 5 Temp = "peta" & Unit Case 6 Temp = "exa" & Unit Case Else Temp = "" End Select If Len(Temp) > 0 Then Temp = LCase(Temp) Temp = UCase(Left(Temp, 1)) & Mid(Temp, 2) If Abs(OrigNum) <> 1 Then Temp = Temp & "s" End If MySciPre = Temp 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 (12874) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Engineering_Calculations [Cálculos de ingeniería]
.