La fórmula modelo para hacer cualquier conversión desde decimal (o base 10) a otra base (de 2 a 9) es:
{=SUMA(RESIDUO(ENTERO(celda/base^((FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1)))-1));base)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1))-1))}
donde:
celda es la dirección de la celda que contiene el número en decimal, aunque lógicamente es posible sustituirla por un número entero positivo o cualquier expresión que entregue uno.
base es la base a la que se desea efectuar la conversión, y ha de ser sustituida por la base que se desee, aunque también se podría poner dicha base en una celda cualquiera y aplicarle el nombre "base" a esa celda, en cuyo caso no habría que modificar esa parte de la fórmula y bastaría con cambiar el valor de esa celda para que la fórmula devolviera el valor en la nueva base.
Por ejemplo, para convertir el valor decimal (base 10) de la celda A1 a binario (base 2), la fórmula (usando de forma explícita la base a la que se desea convertir) sería:
{=SUMA(RESIDUO(ENTERO(A1/2^((FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1)))-1));2)*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(A1;2))+1))-1))}
Esta fórmula de conversión tiene dos limitaciones. La primera de ellas resulta insoslayable: se trata de la precisión numérica máxima de Excel, la cual sabemos que es de 15 dígitos (artículo sobre este tema).
Esta precisión máxima de 15 dígitos significa, en lo que se refiere al tema que estamos tratando, que cualquier número devuelto por la fórmula cuya longitud sea superior a esos 15 dígitos verá convertidos en ceros automáticamente todos los dígitos situados a la derecha, a partir del dígito 16º inclusive. Esto no le impedirá a la fórmula realizar los cálculos (es decir, no provocará un error), pero los resultados mostrados podrán no ser correctos.
Esta primera limitación implica que los números más altos que puede devolver la fórmula con garantías en cada una de las bases 2 a 9 sean:
Base | Número máximo en esa base | Número en decimal |
2 | 10000000000000002 | 32.768 |
3 | 10000000000000003 | 14.348.907 |
4 | 10000000000000004 | 1.073.741.824 |
5 | 10000000000000005 | 30.517.578.125 |
6 | 10000000000000006 | 470.184.984.576 |
7 | 10000000000000007 | 4.747.561.509.943 |
8 | 10000000000000008 | 35.184.372.088.832 |
9 | 10000000000000009 | 205.891.132.094.649 |
La segunda limitación que tiene la fórmula se debe a un fallo en la función RESIDUO de Excel que hace que se produzca el error #¡NUM! cuando el dividendo de la división que ha de procesar RESIDUO es ≥ 134.217.728 veces el divisor. Este error está reconocido por Microsoft y debidamente documentado. Este fallo se produce hasta la versión 2003 (a partir de 2007, el fallo sigue produciéndose pero a partir de 1.125.900.000.000, por lo que no representa ningún problema en lo que respecta al tema que estamos tratando).
La siguiente tabla es la anterior, añadiendo la limitación provocada por este error:
Base | Número máximo en esa base | Número en decimal | Base * 134.217.728 |
2 | 10000000000000002 | 32.768 | 268.435.456 |
3 | 10000000000000003 | 14.348.907 | 402.653.184 |
4 | 10000000000000004 | 1.073.741.824 | 536.870.912 |
5 | 10000000000000005 | 30.517.578.125 | 671.088.640 |
6 | 10000000000000006 | 470.184.984.576 | 805.306.368 |
7 | 10000000000000007 | 4.747.561.509.943 | 939.524.096 |
8 | 10000000000000008 | 35.184.372.088.832 | 1.073.741.824 |
9 | 10000000000000009 | 205.891.132.094.649 | 1.207.959.552 |
Se puede comprobar cómo para las bases 2 y 3 la peor limitación de las dos posibles es la insoslayable, pero que a partir de la base 4 la peor limitación pasa a ser la segunda.
Esta segunda limitación provocada por el error de la función RESIDUO sí se pude soslayar, si se paga el precio de complicar aún más la fórmula al tener que prescindir de dicha función en ella, pasando a hacer el cálculo de los restos de las divisiones "a mano":
{=SUMA((ENTERO(celda/base^((FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1)))-1))-(ENTERO(ENTERO(celda/base^((FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1)))-1))/base)*base))*10^(FILA(INDIRECTO("1:"&ENTERO(LOG(celda;base))+1))-1))}
Así pues esta última fórmula es la recomendada en Excel 2003 para las bases 4 a 9, dejando la primera fórmula como la recomendada para las bases 2 y 3, aunque por supuesto la fórmula más "universal" es la más complicada de las dos, esto es, la última.
A partir de Excel 2007, la fórmula más sencilla debería funcionar sin problemas puesto que se ha subsanado (de forma parcial pero suficiente en lo que respecta a estas fórmulas) el problema de RESIDUO, por lo que no tiene sentido utilizar la más complicada.
Notas
En el libro de ejemplo de estas fórmulas se pueden ver ejemplos de ellas trabajando en todas las bases posibles (2 a 9).
La celda donde esté la fórmula tiene que tener formato numérico, preferentemente con cero posiciones decimales y sin separador de miles.
Hay que tener en cuenta que aunque el número devuelto por la fórmula pueda "parecer" de la base que se haya indicado en ella, en realidad Excel lo tratará como un número en base 10 (decimal) si se intenta hacer cualquier cálculo con él.
Excel dispone del complemento Herramientas para Análisis, que incluye algunas funciones de conversión de bases, como por ejemplo de decimal a binario, a octal y a hexadecimal.
La función SUMA que utilizan todas las fórmulas expuestas en esta página puede sustituirse por la función SUMAPRODUCTO, y en este caso no sería necesario introducirla como matricial, ya que SUMAPRODUCTO trabaja con matrices de forma implícita.
Nota adicional:
Por alguna extraña razón, el buscador Google está mostrando esta página como primer resultado de la búsqueda "averiguar en qué base está un número" y algunas variantes de la misma.
El asunto, como es
obvio, escapa por
completo al tema de esta página, pero diré que la única forma de saber con toda
seguridad a qué base pertenece un número es que se la haya puesto de forma
explícita al final del mismo situando la base como subíndice: por ejemplo 1234567 es un número base 7,
mientras que 1234569 es un número base 9. Si un número carece de su
base, se sobreentiende que es de la base con la que trabajamos normalmente,
esto es base 10.
Por exclusión es posible saber a qué base o bases no puede
pertenecer un número: así, si un número contiene un 2 no puede ser binario, si
contiene un 3 no puede ser de base 3 ni base 2, si contiene un 4 no puede ser de
base 4 ni 3 ni 2, etcétera. Pero, sin embargo, un número compuesto
exclusivamente por unos y ceros podría "ser", evidentemente, de base 2, pero
también de cualquier otra base, salvo que se haga constar de forma explícita que
dicha base es la 2: 11011012 es base 2 mientras que 11011019
es base 9; pero 1101101 puede ser de cualquier base aunque "tenga pinta" de ser
base 2 y se sobreentienda que es base 10.