2011-08-19 16 views
9

Tengo un problema que debería ser tan simple, pero no estoy entendiendo bien. Hago listas de precios impresas para una tienda y este año han dividido los números de parte en 5 hojas de trabajo en lugar de una.Hojas de cálculo de Excel de referencia dinámicamente

Cuando un usuario desea imprimir una etiqueta de precio, ingresa = en C10, hace clic en la Hoja de cálculo "Lista de precios" y navega hasta el número de pieza que necesita.

La fórmula resultante para C10 es:! = Lista de precios B40

E10 debe contener más información sobre el número de parte de manera fórmula E10 es: = VLOOKUP (C10, Lista de precios B: N, 2, FALSE)

Sin embargo, ahora con las nuevas hojas de trabajo que podría seleccionar "New_Items" Hoja de trabajo, en cuyo caso la fórmula resultante para C10 es: = New_Items B40

¿Cómo se puede escribir la fórmula de E10 por lo t que hace referencia a la misma hoja de cálculo que C10.

necesito E10 = VLOOKUP (C10, Lista de precios B: N, 2, FALSE)

para convertirse automáticamente * = VLOOKUP (C10, New_Items B: N, 2, FALSE) *

¿Tiene sentido? ¿Es factible que Excel modifique una referencia de hoja de trabajo basada en la referencia de otra celda?

TIA!

Respuesta

12

Sí, puedes hacerlo usando INDIRECT(). Puede que necesites un poco de trabajo ya que necesitas calcular el nombre de la hoja de alguna manera.

=VLOOKUP(C10, INDIRECT(Concatenate(cell-with-sheet-name, "!B:N"),TRUE) ,2,FALSE) 
+0

Es posible que deba realizar una concatenación de cadenas adicional en otras celdas para determinar el valor real de "celda con nombre de hoja". Esto también puede hacerse más fácil haciendo que todas las hojas de trabajo de búsqueda sean lo más similares posible. – smaclell

+0

"... necesito averiguar el nombre de la hoja de alguna manera". Sí, lo que tengo que hacer es descubrir cómo extraer el nombre de la hoja de C10 y hacer que la fórmula E10 haga referencia a esa misma hoja. ¿Puede INDIRECT ayudarme con eso? Además, los datos en todas las hojas de trabajo están estructurados de forma idéntica, así que una vez que haya superado este obstáculo, estaré en casa. – Thinkwell

+0

Si vba está habilitado, una función simple puede usar Cell.Formula analizar el nombre de la hoja y devolverlo. Para un inicio rápido en UDF, http://www.ozgrid.com/VBA/ExcelIsFormula.htm – Eddy

0

¿Se puede usar vba?

Si es así, tratar este sencillo UDF

Function MyLookup(ref As Range, Offset as Long) As Variant 
    MyLookup = Range(ref.Formula).Offset(0, Offset) 
End Function 

celular E10 =MyLookup(C10, 1)

0

Se puede crear la VBA UDF

Function GetShtNm(rng As Range) As String 
    Application.Volatile 

    If InStr(1, rng.Formula, "!") = 0 Then 
     GetShtNm = vbNullString 
    Else 
     GetShtNm = Mid$(rng.Formula, 2, InStr(1, rng.Formula, "!") - 2) 
    End If 
End Function 

y utilizar esta es la fórmula con la indirecta proporcionada por Eddy .

Esta UDF le permitirá rastrear dinámicamente los cambios de nombre de hoja dentro de la función VLOOKUP INDIRECT.

Cuestiones relacionadas