动态引用 Excel 工作表

发布于 2024-11-30 15:43:35 字数 607 浏览 0 评论 0原文

我有一个应该很简单的问题,但我没有解决它。我为一家商店打印了价目表,今年他们将零件编号分成了 5 张工作表,而不是一张。

当用户想要打印价格标签时,她在 C10 中输入=,单击工作表“价格表”并导航到她需要的零件号。

C10 的结果公式为:​​=Pricelist!B40

E10 必须包含有关零件编号的更多信息,因此 E10 公式为:=VLOOKUP(C10,Pricelist!B:N,2,FALSE)

但是,现在有了新工作表,她可能会选择工作表“New_Items”,在这种情况下,C10 的结果公式为: =New_Items!B40

如何编写 E10 的公式,使其引用与 C10 相同的工作表。

我需要 E10 =VLOOKUP(C10,Pricelist!B:N,2,FALSE)

自动变为 *=VLOOKUP(C10,New_Items! B:N,2,FALSE)*

这有道理吗?是否可以让 Excel 根据另一个单元格的引用修改工作表引用?

蒂亚!

I have a problem that should be so simple, but I'm not getting my head around it. I do printed pricelists for a store and this year they've split up the part numbers into 5 worksheets instead of one.

When a user wants to print out a pricetag, she enters the = into C10, clicks the Worksheet "Pricelist" and navigates to the part number she needs.

The resulting formula for C10 is: =Pricelist!B40

E10 must contain more info about the part number so E10 formula is: =VLOOKUP(C10,Pricelist!B:N,2,FALSE)

However, now with the new worksheets she might select Worksheet "New_Items" in which case the resulting formula for C10 is: =New_Items!B40

How can I write the formula for E10 so that it references the same worksheet that C10 does.

I need E10 =VLOOKUP(C10,Pricelist!B:N,2,FALSE)

to automatically become *=VLOOKUP(C10,New_Items!B:N,2,FALSE)*

That make sense? Is that doable to have Excel modify a worksheet reference based on another cell's reference?

TIA!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

黑白记忆 2024-12-07 15:43:35

是的,您可以使用 INDIRECT() 来完成此操作,这可能需要一些工作,因为您需要以某种方式计算出工作表的名称。

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

Yes you can do this using INDIRECT() It might take a bit of work since you need to work out the name of the sheet somehow.

=VLOOKUP(C10, INDIRECT( Concatenate(cell-with-sheet-name, "!B:N"),TRUE ) ,2,FALSE)
北风几吹夏 2024-12-07 15:43:35

可以用vba吗?

如果是这样,请尝试这个简单的 udf

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

Cell E10 =MyLookup(C10, 1)

Can you use vba?

If so, try this simple udf

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

Cell E10 =MyLookup(C10, 1)

╰沐子 2024-12-07 15:43:35

您可以创建 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

并使用 Eddy 提供的间接公式。

此 UDF 将允许您在 VLOOKUP INDIRECT 函数中动态跟踪工作表名称更改。

You could create the 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

and use this is the formula with the indirect provided by Eddy.

This UDF will let you dynamically track sheet name changes within the VLOOKUP INDIRECT function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文