2012-06-21 16 views
7

Esto es bastante complejo, pero haré todo lo posible para explicarlo lo más claramente posible. Por favor, avíseme si no tiene sentido.Funciones INDIRECTAS anidadas en Excel - trabajando en una computadora pero devolviendo #REF en otra

Tengo dos libros de trabajo: una entrada y una salida. Tienen que estar separados por la forma en que funciona el sistema, es decir, un 'nominador' hace todo el ingreso en un libro de trabajo de entrada simple y el libro de trabajo de salida lo formatea para su uso. Para que esto funcione, el libro de trabajo de salida debe hacer referencia al libro de trabajo de entrada para recuperar valores.

He estado probando esto con ambos libros abiertos.

Para lograr esto, hago uso de las funciones anidadas INDIRECT; el primero crea la ruta del archivo, invoca un rango con nombre, y el segundo le dice a Excel que interprete esa ruta del archivo y recupere el valor.

que empezar por el uso de INDIRECT para construir una vía de archivo:

=INDIRECT("input_sheet_location")&"Wk 25 2012'!$B$11" 

Esto devuelve algo como:

\\My Documents\Subfolder\[input_sheet.xlsx]Wk 25 2012'!$B$11 

Y luego nido en otro con el fin de conseguir Excel para leer ese camino:

=INDIRECT("'"&INDIRECT("input_sheet_location")&"Wk 25 2012'!$B$12") 

Esto devuelve con éxito el valor de la celda B12 de la entrada_s heet_location - un rango con nombre, que es un directorio de archivos. Por el bien de los argumentos, podemos decir que devuelve:

Captain America's underpants 

Así que lo anterior funciona perfectamente bien. Para mi. Sin embargo, en la máquina de otro usuario, no funciona. He tratado de excavar, y resolví lo siguiente:

  1. La conexión entre los archivos también está presente en sus sistemas - explorando Datos> Editar enlaces muestra que tienen la misma conexión de trabajo que yo.
  2. La ruta de archivo producida es la misma; Construí una macro para mostrárselo al usuario, y en 3 máquinas, sale siempre igual.
  3. Lo más crucial (y confuso), la fórmula INDIRECT no anidada funciona. Es solo la fórmula anidada que solo funciona en mi computadora. En la computadora de todos los demás usuarios, devuelve un error #REF.

¿Alguien tiene alguna idea de por qué este podría ser el caso? Estoy en una pérdida.

Gracias por leer ese spiel.

+2

Esto es solo una posibilidad, pero no sé si será útil, pero el libro de entrada está abierto en las máquinas del otro usuario, porque tiene que ser para que la función indirecta funcione. No puede (al menos sin VBA, que yo sepa) actualizar los datos de las fórmulas vinculadas sin abrir el libro. Excel almacena el enlace cuando cierra el libro vinculado, pero como está utilizando indirectamente, no almacenará un enlace, porque, en efecto, no lo ha hecho. Si el enlace está allí, se le pedirá que lo actualice y todo estará bien. Si eso no funciona, podemos buscar otras cosas. –

+0

relacionado: http://stackoverflow.com/questions/9259862/executeexcel4macro-to-get-value-from-closed-workbook y http://stackoverflow.com/questions/9033656/copying-from-closed-workbook-excel -vba – JMax

+0

Gracias Scott, buen punto. La respuesta es sí, está abierto. He editado la pregunta para reflejar este detalle. – seegoon

Respuesta

2

usted dijo que la primera fórmula indirecta + concatenar se devuelve un valor como:

\\My Documents\Subfolder\[input_sheet.xlsx]Wk 25 2012'!$B$11 

no caso de que el nombre de la hoja tiene una comilla simple en cada lado y devolver un valor como:

\\My Documents\Subfolder\[input_sheet.xlsx]'Wk 25 2012'!$B$11 

Noto que su segunda fórmula tiene una comilla simple para el nombre de la hoja antes de la ruta del archivo.

en lugar de tratar las dos fórmulas siguientes:

=INDIRECT("input_sheet_location")&"'Wk 25 2012'!$B$11" 

y/o

=INDIRECT(INDIRECT("input_sheet_location")&"'Wk 25 2012'!$B$12") 

Avisadme si trabajan para usted.

0

podría ser una pregunta tonta, pero, ¿esto realmente funciona?

= INDIRECTO ("input_sheet_location") & "Wk 25 2012' ! $ B $ 11"

no significa el paréntesis al final de _Location cerrar la función indirecta? ¿no debería ser

= INDIRECTO ("input_sheet_location" & "Wk 25 2012' ! $ B $ 11")

Al menos esa es la única forma en que funciona para mí es tener todo el camino dentro de la indirecta función paréntesis

Cuestiones relacionadas