假设我有一个单元格 C5,并且我想在第一个工作表的单元格中显示工作表名称,该工作表在该工作簿的所有工作表中具有最高的 C5 值。
注意,不是C5的最大值,而是工作表名称
我不想要这个:
=MAX('第一个工作表名称:最后一个工作表名称'!B1)
我已经知道这一点,并且我正在寻求其他的东西
答案1
您可以使用查找()
首先我们创建一个表查找()使用。使用姓名经理在里面数据选项卡,我们创建一个Name
名为工作表并为其指定以下公式:
=SUBSTITUTE(GET.WORKBOOK(1),"["&GET.WORKBOOK(16)&"]","")
然后在任意一张表中选取某个单元格,比如I2并输入:
=IF(COUNTA(Sheets)>=ROW($A1),INDEX(Sheets, ROW($A1)), "")
并抄下来。(这将创建工作表名称列表)
在氢气进入:
=IF(I2="","",INDIRECT(I2 & "!C5"))
并抄下来。ColsH和我查找表如下:
最后进行以下查找:
=VLOOKUP(MAX(H:H),H:I,2,FALSE)
检索工作表名称
答案2
不使用 VBA 返回 Sheet 名称有点棘手。
您可以做的一件事是手动比较单元格和 Sheet,但这仅在您只有少量 Sheet 和单元格时才可行。
=IF(Sheet1!C5>Sheet2!C5;IF(Sheet1!C5>Sheet3!C5;"Sheet1";"Sheet3");IF(Sheet2!C5>Sheet3!C5;"Sheet2";"Sheet3"))
简单比较“Sheet1”、“Sheet2”和“Sheet3”中 C5 的值。
我知道的显示工作表名称的唯一方法是使用类似以下内容的方法:
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
这将仅返回指定单元格的工作表,在本例中为代码所在的工作表。
或者在 VBA 中,类似以下内容:
Dim cell As Range
Dim cellAddress As String
Set cell = ThisWorkbook.Worksheets(1).Cells(1, 1)
cellAddress = cell.Parent.Name
现在我们只需将其与正确的单元格结合起来。还没有弄清楚那部分。