2011-08-19 11 views
9

Tôi gặp vấn đề nên đơn giản như vậy, nhưng tôi không nhận được đầu của tôi xung quanh nó. Tôi làm bảng giá in cho một cửa hàng và năm nay họ đã chia các số phần thành 5 bảng thay vì một.Tham khảo các trang tính Excel động

Khi người dùng muốn in thẻ pricetag, cô ấy nhập vào = vào C10, nhấp vào Bảng tính "Bảng giá" và điều hướng đến số phần mà cô ấy cần.

Công thức kết quả cho C10 là: = Bảng giá B40

E10 phải chứa thêm thông tin về số lượng phần rất E10 thức là: = VLOOKUP (C10, Bảng giá B: N, 2, FALSE)

Tuy nhiên, bây giờ với các bảng tính mới, cô có thể chọn Worksheet "New_Items" trong trường hợp này công thức kết quả cho C10 là: = New_Items B40

Làm thế nào tôi có thể viết công thức cho E10 nên t mũ nó tham khảo cùng một bảng tính mà C10 làm.

Tôi cần E10 = VLOOKUP (C10, Bảng giá B: N, 2, FALSE)

để tự động trở thành * = VLOOKUP (C10, New_Items B: N, 2, FALSE) *

Điều đó có ý nghĩa? Đó là doable để có Excel sửa đổi một tham khảo bảng tính dựa trên tài liệu tham khảo của một tế bào?

TIA!

Trả lời

12

Có, bạn có thể thực hiện việc này bằng cách sử dụng INDIRECT() Có thể mất một chút công việc vì bạn cần tìm ra tên của trang tính bằng cách nào đó.

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

Bạn có thể cần phải thực hiện chuỗi nối thêm trong các ô khác để xác định giá trị thực tế cho "ô có tên trang tính". Điều này cũng có thể được thực hiện dễ dàng hơn bằng cách làm cho tất cả các bảng tra cứu của bạn càng giống nhau càng tốt. – smaclell

+0

"... cần phải làm việc ra tên của tờ bằng cách nào đó." Có, những gì tôi cần làm là tìm ra cách trích xuất tên trang tính từ C10 và có tham chiếu công thức E10 cùng một trang tính. INDIRECT có thể giúp tôi với điều đó không? Ngoài ra, dữ liệu trong tất cả các trang tính được cấu trúc giống nhau vì vậy khi tôi vượt qua rào cản này, tôi không có nhà. – Thinkwell

+0

Nếu vba được kích hoạt một chức năng đơn giản có thể sử dụng Cell.Formula phân tích các tên sheet ra và trả lại nó. Để biết thêm về http://www.ozgrid.com/VBA/ExcelIsFormula.htm của UDF – Eddy

0

Bạn có thể sử dụng vba không?

Nếu vậy, hãy thử udf này đơn giản

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

di động E10 =MyLookup(C10, 1)

0

Bạn có thể tạo các 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 

và sử dụng này là công thức với gián tiếp cung cấp bởi Eddy .

UDF này sẽ cho phép bạn theo dõi động các thay đổi tên bảng trong hàm VLOOKUP INDIRECT.