【问题标题】:Reference next or previous sheet in a formula if the sheet number/name is a varible/variant如果工作表编号/名称是变量/变体,请在公式中引用下一个或上一个工作表
【发布时间】:2017-09-28 07:56:21
【问题描述】:

如果工作表编号/名称是变量/变体,我如何在公式中引用下一个或上一个工作表。

我已经看到了用 vba 做到这一点的方法,有没有办法用公式或函数做到这一点

【问题讨论】:

  • 请举个例子

标签: excel function excel-formula


【解决方案1】:

这是另一种使用常规 Excel 公式列出所有工作表名称的方法:

  1. Cell A1:=CELL("filename",1:1048576)

  2. Cell B1:=MID(A1,FIND("[",A1)+1,FIND("]",A1)-FIND("[",A1)-1)

  3. 转到Formula > Name Manager > New,如下图,在Name字段中输入SheetNames,在Refers to字段中输入以下公式:

    =GET.WORKBOOK(1,Sheet29!$B$1)&T(NOW())

    请注意,我是在 Sheet29 上设置的。您应该将其更改为您正在使用的工作表。

  4. 来自cell A2,填写下面的公式并向下拖动以列出所有工作表名称:

    =INDEX(MID(SheetNames,FIND("]",SheetNames)+1,255),ROWS(A$1:A1))

在我的示例中,我没有Sheet28,并且工作表名称也按从左到右的顺序排序。移动并检查结果。

【讨论】:

    【解决方案2】:
    1. 在 Excel 中。在任何单元格中输入等号“=”。这将使您进入交互模式。

    2. 导航到其他工作表并单击要引用的单元格。然后点击进入。

    3. 返回上一张表并编辑您开始使用的单元格,您应该会看到要使用的公式。

    参考下一张/上一张表(See example here)。我认为你需要一些 VB 代码(类似于以下内容):

    Function PrevSheet(RCell As Range)
        Dim xIndex As Long
        Application.Volatile
        xIndex = RCell.Worksheet.Index
        If xIndex > 1 Then _
            PrevSheet = Worksheets(xIndex - 1).Range(RCell.Address)
    End Function
    

    然后使用

    =PrevSheet(A1)
    

    【讨论】:

    • 谢谢,但这只是输入工作表名称,工作表名称将是未知的,但始终是右边的工作表。有什么方法可以参考吗?
    • 谢谢,我知道这是如何工作的,但是,这取决于与纸张数量对齐的纸张编号。我有一个正在运行的宏,它在宏完成后根据不同的输入删除各种工作表我只有两张工作表,一张永远是 sheet1,另一个可以是从 sheet2 到 sheet30 的任何东西
    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2023-01-24
    • 2022-01-19
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    相关资源
    最近更新 更多