Recibí el mensaje de error "Excel se quedó sin recursos al intentar calcular una o más fórmulas" en UNA de mis computadoras (de 2).
Mi hoja de cálculo contiene: (Dentro de una sola hoja de cálculo, no de un libro)
-
1,000,000 fórmulas
-
una tabla dinámica basada en 900,000 filas de datos
Cuando ejecuto excel/vba en la acción "Calcular hoja" (Solo la hoja de cálculo actual), el programa mostraría el siguiente mensaje de error:
Excel se quedó sin recursos al intentar calcular una o más fórmulas
ni yo "actualizo" una tabla dinámica en (Excel o VBA) o "Calcular hoja" en (Excel o VBA)
Tengo 2 computadoras:
-
ambas ejecutan Windows 7 de 64 bits,
-
ambas ejecutan Excel 2007 de 32 bits,
-
Ejecuto Excel justo después de iniciar Windows,
-
mi PC de desarrollo con 2GB de RAM puede ejecutarse sin problemas,
-
otra PC con 6GB de RAM mostró el mensaje de error
se quedó sin recursos
-
Ejecutando en el mismo conjunto de datos, mismo archivo de excel
También noto que en mi PC de desarrollo, está utilizando ~ 1.2G de RAM, y en la PC que no funciona, está utilizando 900M de RAM antes de hacer clic en la acción de "Actualizar"/"Calcular".
EDICIÓN
La Computadora que no funciona puede manejar datos dentro de 100,000 filas de datos
Mis preguntas:
- ¿Por qué funciona para la computadora con menos memoria pero no para la que tiene más memoria? (pregunta principal)
- ¿Qué puedo hacer para reducir la memoria utilizada por Excel? (pregunta secundaria) (Aparte de eliminar datos)
Se agradece cualquier ayuda, por favor indíquenme en la dirección correcta o simplemente denme alguna pista.
EDICIÓN: Estoy pensando en eliminar las fórmulas, y mover la lógica a vba, y hacerlo almacenando en caché probablemente cada 10,000 filas. Pero esto no resolvería mi problema si "actualizar" tabla dinámica mostraría el mismo error.
0 votos
Es extraño que la computadora que no funciona tenga más RAM. ¿Puedes verificar si hay suficiente memoria libre (tanto física como de intercambio) en la computadora que muestra errores? Aparte de eso, diría que se optimice o se divida la hoja si es posible. ¿1 millón de fórmulas suena un poco grande para una hoja de Excel?
0 votos
@lc. En esa computadora, en el Administrador de tareas vi que la memoria libre es de 2.2G
0 votos
Extraño. ¿Es el mismo archivo exacto con los mismos datos?
0 votos
@lc. Sí, mismo conjunto de datos, mismo archivo.
0 votos
¿Tienen las 2 máquinas las mismas opciones de cálculo en Excel? ¿Están las 900.000 filas ubicadas en el Libro de trabajo o en una base de datos externa?
0 votos
@iDevlop Feliz año nuevo, olvidé mencionar que el error también ocurriría si cambio la opción de cálculo de MANUAL a AUTO. Y las filas de datos están en otra hoja de cálculo en el libro.
0 votos
¿Ambos están ejecutando la misma versión de Office? ¿32 o 64 bits?
0 votos
@iDevlop Excel 2007 solo tiene 1 versión, de 32 bits, office comienza a admitir 64 bits en la versión de 2010 y supongo que la subversión del SO y Excel son las mismas.
0 votos
Raro. Puedes intentar ahorrar algunos recursos utilizando fórmulas de matriz en lugar de fórmulas regulares, pero dudo que solucione tu problema. ¿Son similares los tamaños de archivo guardados en ambas máquinas?
0 votos
Permitanos continuar esta discusión en el chat
0 votos
Lo siento, no puedo chatear. El chat de SO está bloqueado en mi lugar de trabajo en este momento :-/
0 votos
@iDevlop Gracias por tu opinión nuevamente, lo revisaré mañana. Actualmente no tengo acceso al ordenador que no funciona. La peor parte del problema es que no puedo "actualizar" la tabla dinámica (basada en 900,000 filas de datos * 9 columnas). Primero intentaré eliminar tantas fórmulas como sea posible, guardándolas como valor. Luego intentaré limitar el rango de la tabla dinámica en el ordenador que no funciona. La solución en el peor de los casos que se me ocurre es utilizar una tabla dinámica en el resultado agregado de parte de la tabla dinámica original y el resto de los datos.
0 votos
¿Por qué no mover los datos a otro libro de trabajo, o incluso a una base de datos de Access? Con tus datos en Access, eliminarás la mayoría de las limitaciones en el tamaño de tu conjunto de datos.
0 votos
@iDevlop Las 900.000 filas de datos son el resultado de una consulta extraída de la base de datos de Oracle, necesitaba una presentación de tabla dinámica del resultado.
3 votos
Ok. ¿Entonces por qué mover las líneas a Excel? Puedes configurar tu Pivot para consultar directamente a Oracle. Si no hay indicaciones específicas en contra, yo lo haría de esa manera.
2 votos
O incluso mejor, si estás utilizando al menos Oracle 11g entonces soporta nativamente las consultas PIVOT, el trabajo se realizaría en el servidor en lugar de localmente y se deberían evitar problemas de recursos.
1 votos
@Larry, me he encontrado con el mismo problema varias veces y generalmente lo atribuí a la versión de 32 bits de Excel como el problema. En cuanto a por qué funciona en una máquina y no en otra ... diría que es simplemente la forma en que el sistema operativo / instalación ha asignado los recursos. Las únicas 2 soluciones que he encontrado para esto son: 1) Escribir soluciones .Net que hagan la mayor parte del trabajo, luego hacer que una macro de Excel llame al .exe a través de
shell
y luego importar los datos ya calculados / hacer un trabajo de limpieza mínimo. 2) MUCHA experimentación con mi código para tratar de hacerlo más eficiente / consumir menos memoria ... ¡Buena suerte!0 votos
IDevlop gracias por la sugerencia una vez más. Pero tengo que hacer un proceso de tratamiento de datos en medio... @JohnBustos En el primer punto, uno de mis principales problemas es que "actualizar" la tabla dinámica ya supondría el problema. ¿Puede .NET trazar también tablas dinámicas? En el segundo punto, sí, lo intentaré... Aunque sé que si el tamaño de los datos aumenta más, entonces... nada funcionará. ¡Muchas gracias! Actualizaré mañana, gracias de nuevo.
1 votos
Dos cosas que se me ocurren para verificar. 1) ¿La máquina de 6gb tiene otros programas usando más memoria? 2) ¿Ambas versiones de Excel son EXACTAMENTE la misma (mismas actualizaciones, etc aplicadas)?
0 votos
Esa cantidad de datos podría ser mejor gestionada por una base de datos en términos de velocidad (asumiendo que la información de salida valiosa está en la tabla dinámica). Pero dependiendo de la complejidad de la fórmula, este enfoque podría requerir un poco de retoque.
0 votos
@Larry: ¡Buenas noticias! ¡Finalmente añade una respuesta a tu propia pregunta para hacernos saber!