Está en la página 1de 6

Copiar datos de una hoja a otra en Excel sin macros

Frecuentemente recibo consultas sobre cmo copiar datos de una hoja a


otra en Excel de una manera automtica pero sin utilizar macros, y para
atender ambos requerimientos solo tenemos la opcin de utilizar ampliamente
las frmulas de Excel.
Antes de continuar debo mencionar que no existe una funcin de Excel que
copie mgica y automticamente los datos de una hoja a otra, as que ser
necesario crear varias frmulas para lograr nuestro objetivo. Debido a la
cantidad de frmulas que podemos llegar a tener, esta alternativa de solucin
no ser la ms ptima para grandes cantidades de datos porque ocasionar
que el libro de trabajo tome un tiempo considerable en el clculo de las
frmulas. As que, conociendo de antemano esta recomendacin, iniciemos con
el planteamiento del problema.
Planteamiento del problema
En una hoja de Excel tengo una base de datos de productos cuyos datos deseo
copiar a una hoja independiente en base a su categora. Para los datos de
ejemplo necesitar tres hojas adicionales para las categoras Fotografa, Libros
y Software.

Al agregar nuevos registros a la hoja principal, los datos debern reflejarse


automticamente en la hoja de su categora.
Estrategia de solucin
La estrategia que seguiremos para copiar datos de una hoja de Excel a
otra ser la siguiente:

Partiremos de una hoja que contiene todos nuestros datos y a partir de ella
crearemos una hoja temporal para cada categora de datos. El nico
inconveniente que tendrn las hojas temporales sern las filas entre los
registros, pero dichas filas sern eliminadas al crear la ficha final dejando solo
los registros con los datos que nos interesan.
Copiar datos a una hoja temporal
En base a los datos mostrados en la imagen inicial, he creado una hoja
temporal llamada Temp_Fotografia y en la cual extraer los datos de la
categora Fotografa ubicados en la hoja Datos. La frmula que colocar en la
celda A2 ser la siguiente:
=SI(Datos!$C2="Fotografa",Datos!A2,NOD())
Esta frmula evala el valor de la celda C2 de la hoja Datos para saber si
pertenece a la categora Fotografa y en caso de ser verdadero trae el valor
de la celda A2 de la hoja Datos. En caso contrario, obtendremos un error #N/A
originado por la funcin NOD. Observa el resultado de esta frmula en la celda
A2 de la hoja Temp_Fotografia:

La frmula nos devuelve correctamente el valor de la primera columna del


primer registro ya que efectivamente pertenece a la categora Fotografa. Para
obtener el resto de las columnas ser suficiente con arrastrar la frmula hacia
la derecha para obtener el siguiente resultado:

Quiero que pongas especial atencin a la referencia mixta que he colocado en


la frmula como Datos!$C2 la cual fija solamente la columna C lo cual es de
suma importancia al momento de copiar la frmula hacia la derecha. Para
saber si el resto de registros pertenecen a la categora Fotografa solo debo
arrastrar la frmula hacia abajo y obtendr el siguiente resultado:

Si comparas los datos de la hoja temporal con la hoja de datos original


observars que solamente estarn presentes aquellos registros que pertenecen
a la categora Fotografa y el resto de filas se mostrarn con el error #N/A.

Observa que he copiado la frmula hasta la fila 20 haciendo previsin para


cuando los datos originales tambin aumenten hasta la fila 20.
Siguiendo los mismos pasos mostrados hasta ahora debemos crear una hoja
temporal para cada categora de datos que deseemos copiar. La nica
modificacin a la frmula deber ser el nombre de la categora, por ejemplo,
para la hoja temporal de la categora Libros utilizar la siguiente frmula en la
celda A2:
=SI(Datos!$C2="Libros",Datos!A2,NOD())
Copiar datos de una hoja a otra
El paso final es tomar como base las hojas temporales que hemos creado y
eliminar las filas que tienen los errores #N/A para dejar solamente los registros
que contienen datos. Para ello crear una nueva hoja con el nombre de la
categora Fotografa y en la celda A2 colocar la siguiente frmula para
copiar datos de una hoja a otra descartando las celdas con errores de la
hoja temporal:
=SI.ERROR(INDICE(Temp_Fotografia!A$2:A$20,
K.ESIMO.MENOR(SI(ESERROR(Temp_Fotografia!A$2:A$20), "",
FILA(Temp_Fotografia!A$2:A$20)-MIN(FILA(Temp_Fotografia!A$2:A$20))+1),
FILA(1:1))),"")
Esta no es una frmula sencilla de explicar, pero la funcin principal es
la funcin INDICE la cual obtiene el valor de un rango con solo especificar la
fila. El rango sobre el cual se buscar el valor es el rango A2:A20 de la hoja
Temp_Fotografia y que est indicado como el primer argumento de la funcin.
El nmero de fila que ser devuelto es calculado por la funcin
K.ESIMO.MENOR que con la ayuda de la funcin ESERROR descarta las filas que
contienen el error #N/A y solamente considera aquellas que tienen datos.
Observa tambin que el resultado de la funcin INDICE est dentro de
la funcin SI.ERROR para mostrar una cadena vaca en caso de encontrar un
error.
Adems, es necesario que esta frmula sea ingresada como una frmula
matricial lo cual implica colocarla en la barra de frmulas y pulsar las teclas
Ctrl + Mays + Entrar. En la siguiente imagen puedes observar el resultado de
ingresar esta frmula en la celda A2:

Despus de haber ingresado esta frmula en la primera celda la arrastrar


hacia la derecha y posteriormente hacia abajo hasta la fila 20 y obtendr el
siguiente resultado:

Puedes notar que las filas intermedias con errores que aparecan en la hoja
temporal han sido eliminadas y ahora solo se muestran los registros con datos
de la categora correspondiente. De igual manera he copiado la frmula hasta
la fila 20 para que se reflejen los resultados automticamente hasta un
mximo de 20 registros. El procedimiento para las otras hojas ser el mismo
que hemos seguido hasta ahora y solo debemos cambiar la hoja temporal a la

cual hace referencia la frmula. Por ejemplo, para la hoja Libros utilizar la
siguiente frmula en la celda A2:
=SI.ERROR(INDICE(Temp_Libros!A$2:A$20,
K.ESIMO.MENOR(SI(ESERROR(Temp_Libros!A$2:A$20), "", FILA(Temp_Libros!
A$2:A$20)-MIN(FILA(Temp_Libros!A$2:A$20))+1), FILA(1:1))),"")
Algo que no debes olvidar es que todos los rangos de las frmulas que hemos
creado hasta ahora los he limitado hasta la fila 20, pero si tienes una mayor
cantidad de datos en tu libro, debers adecuar dicho rango a la cantidad de
filas necesarias.
Comprobar el funcionamiento de las frmulas
Para comprobar que nuestras frmulas funcionan correctamente ser suficiente
agregar nuevos registros en la hoja Datos y validar que se reflejen
automticamente en las hojas correspondientes. En la siguiente animacin
puedes observar cmo realizo esta comprobacin:

Puedes descargar el libro de trabajo que utilic en este ejemplo y comprobar


que al agregar datos para las dems categoras se vern reflejados en sus
propias hojas. Es as como hemos aprendido a copiar datos de una hoja a
otra en Excel sin macros, solo recuerda que entre ms datos tengas mayor
ser la cantidad de frmulas contenidas en el libro lo cual podra en algn
momento llegar a impactar en el desempeo de la hoja de clculo.