2011-08-19 18 views
9

Ho un problema che dovrebbe essere così semplice, ma non riesco a capirlo. Faccio stampare i prezzi dei listini per un negozio e quest'anno hanno suddiviso i numeri parte in 5 fogli di lavoro anziché uno.Fogli di lavoro Excel di riferimento dinamicamente

Quando un utente desidera stampare un prezzo di listino, inserisce il = in C10, fa clic sul foglio di lavoro "Listino prezzi" e passa al numero parte di cui ha bisogno.

La formula risultante per C10 è:! = Listino B40

E10 deve contenere ulteriori informazioni circa il numero di parte in modo E10 formula è: = VLOOKUP (C10, Prezzi B: N, 2, FALSE)

Tuttavia, ora con i nuovi fogli di lavoro che potrebbe selezionare "New_Items" Foglio di lavoro, nel qual caso la formula risultante per C10 è:! = New_Items B40

Come posso scrivere la formula per l'E10 in modo t Hat fa riferimento allo stesso foglio di lavoro che fa C10.

ho bisogno E10 = VLOOKUP (C10, Prezzi B: N, 2, FALSE)

per diventare automaticamente * = VLOOKUP (C10, New_Items B: N, 2, FALSE) *

Che senso ha? È possibile che Excel modifichi un riferimento al foglio di lavoro in base al riferimento di un'altra cella?

TIA!

risposta

12

Sì, è possibile farlo utilizzando INDIRETTO() Potrebbe essere necessario un po 'di lavoro poiché è necessario elaborare il nome del foglio in qualche modo.

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

Potrebbe essere necessario eseguire concatenazioni di stringhe aggiuntive in altre celle per determinare il valore effettivo di "cell-with-sheet-name". Questo può anche essere reso più facile rendendo tutti i fogli di lavoro di ricerca il più possibile simili. – smaclell

+0

"... ho bisogno di calcolare il nome del foglio in qualche modo." Sì, quello che devo fare è capire come estrarre il nome del foglio da C10 e fare in modo che la formula E10 faccia riferimento allo stesso foglio. INDIRETTO può aiutarmi con quello? Inoltre, i dati di tutti i fogli di lavoro sono strutturati in modo identico, quindi una volta superato questo ostacolo sono a casa libera. – Thinkwell

+0

Se vba è abilitato, una semplice funzione può usare Cell.Formula per analizzare il nome del foglio e restituirlo. Per un rapido avvio su http://www.ozgrid.com/VBA/ExcelIsFormula.htm di UDF – Eddy

0

È possibile utilizzare vba?

Se è così, provate questo semplice UDF

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

cellulare E10 =MyLookup(C10, 1)

0

Si potrebbe creare l'UDF VBA

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 

e utilizzare questa è la formula con l'indiretta fornita da Eddy .

Questo UDF consente di monitorare in modo dinamico le modifiche al nome del foglio all'interno della funzione CERCA.VERT INDIRETTO.

Problemi correlati