Recibí el mensaje de error "Excel se quedó sin recursos al intentar calcular una o más fórmulas" enUNOde mis computadoras (De 2).
Mi hoja de trabajo contiene: (Dentro de una sola hoja de trabajo, no de un libro de trabajo, hay fórmulas en otra hoja de trabajo)
1.000.000 de 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 trabajo actual), el programa muestra el siguiente mensaje de error:
Excel ran out of resources while attempting to calculate one or more formulas
en ninguno de los dos "actualizo" una tabla dinámica en (Excel o VBA) o "Calculo hoja" en (Excel o VBA)
Tengo 2 computadoras:
ambos con Windows 7 de 64 bits,
ambos ejecutando Excel 2007 de 32 bits,
Ejecuto Excel inmediatamente después de iniciar Windows,
mi PC de desarrollo con 2 GB de RAM puede funcionar sin problemas,
otra PC con 6 GB de RAM mostró el
ran out of resources
mensaje de errorEjecutándose con el mismo conjunto de datos, el mismo archivo de Excel
También noto que en mi PC de desarrollo, está usando ~ 1.2G de RAM, y la PC que no funciona, está usando 900M de RAM antes de hacer clic en la acción "Actualizar"/"Calcular".
EDITAR
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? (subpregunta) (Aparte de eliminar datos)
Se agradece cualquier ayuda, indíqueme la dirección correcta o simplemente deme alguna pista.
EDITAR:Estoy pensando en eliminar las fórmulas, mover la lógica a vba y hacerlo almacenando en caché los datos, tal vez por 10,000 filas. Pero esto no resolverá mi problema si "actualizar" la tabla dinámica muestra el mismo error.
Respuesta1
La razón probablemente sea la diferente fragmentación de la memoria de 32 bits en los 2 Pcs (a menudo es difícil utilizar todos los 2 GB teóricamente disponibles).
Puede reducir la cantidad de memoria utilizada por la tabla dinámica reduciendo el número de columnas y/o reduciendo la memoria requerida por algunas de las columnas (las cadenas de texto son un buen candidato).
(Puede medir la cantidad de memoria utilizada por el caché dinámico con VBA PivotCache.memoryUsed).
Supongo que está creando el caché dinámico leyendo los datos de la consulta directamente en el caché dinámico en lugar de colocar los datos de la consulta en una hoja de trabajo y basarlos. el pivote en la hoja de trabajo, que usaría mucha más memoria.
No dices cuáles son las fórmulas >1000000, por lo que no tengo ninguna sugerencia para mejorarlas.
Si desea utilizar grandes cantidades de datos en pivotes de Excel, etc., obtendrá mejores resultados con la versión de 64 bits de Excel 2010, que no tiene el límite de 2 GB.
Respuesta2
gracias por todas las sugerencias, lecturas y ayuda. He resuelto el problema por
- Cambie todas las fórmulas a valores paso a paso por ~ 100.000 filas. Esto reduce la memoria de Excel en un 10 %.
- Se eliminaron todos los datos/hojas de trabajo innecesarios en el libro de trabajo (los datos sin procesar antes del masaje de datos). Esto reduce la memoria de Excel en un 40 %.
y la lecturahttp://www.add-ins.com/support/out-of-memory-or-not-enough-resource-problem-with-microsoft-excel.htmsugiera por qué la PC con 6G RAM enfrenta este problema en lugar de la PC con 2G RAM. Creo que es porque la PC 6G tiene muchos complementos de Excel que también consumen RAM.
Gracias por las ayudas.
Respuesta3
Pregunta anterior pero aún válida para todas las versiones, me encuentro con problemas similares cuando las fórmulas que utilicé tenían un alcance demasiado grande a pesar de que la mayoría de los campos estaban vacíos, por ejemplo: DO_CALCULATION(D1:D100000) tomará una cantidad significativa de tiempo y memoria incluso si solo las celdas D1:D10 tienen algún valor. Así que tenga cuidado al intentar preparar fórmulas para la expansión de datos, mantenga los rangos pequeños :)
Respuesta4
La respuesta es actualizar a una versión de Excel de 64 bits. Puede abordar un rango de memoria mucho mayor y, en general, también es mucho más rápido y la herramienta adecuada para el trabajo si tiene una hoja de cálculo grande.