我有以下简单的Excel电子表格:
A
1 Sheet1 =MID(CELL("filename",Sheet1!K1),FIND("]",CELL("filename",Sheet1!K1))+1,255)
2 Sheet2 =MID(CELL("filename",Sheet2!K1),FIND("]",CELL("filename",Sheet2!K1))+1,255)
3 Sheet3 =MID(CELL("filename",Sheet3!K1),FIND("]",CELL("filename",Sheet3!K1))+1,255)
4 Sheet4 =MID(CELL("filename",Sheet4!K1),FIND("]",CELL("filename",Sheet4!K1))+1,255)
5 Sheet5 =MID(CELL("filename",Sheet5!K1),FIND("]",CELL("filename",Sheet5!K1))+1,255)
6
7
在Column A
中,Excel文件中包含所有工作表的列表。
我使用旁边的公式列出了工作表。
到目前为止,所有这些都工作正常。
现在,电子表格中的某些工作表可能不可见(隐藏)。在这种情况下,我希望这些表不会出现在中。因此,我想知道是否有一个公式可以识别一张纸是否可见。像这样:
IF MID(CELL("filename",Sheet1!K1),FIND("]",CELL("filename",Sheet1!K1))+1,255) = Invisible THEN ""
您知道如何解决此问题吗?
答案 0 :(得分:2)
我不太了解此列表的用途……似乎您只是在复制屏幕底部显示的工作表“选项卡”列表。
我觉得某事变得比必要的更加复杂; XY Problem或您尝试在不重新组织的情况下进行管理的一些重复数据。 :-)
无论如何,根据我对您问题的理解,没有内置函数可以满足您的需求,但是这些VBA示例应该为您提供一些想法:
此过程在立即窗口中列出了所有可见的工作表(从VBA中单击 Ctrl + G 可以查看它):
Sub ListSheets() 'list in immediate window
Dim sht As Worksheet
For Each sht In Worksheets
If sht.Visible = xlSheetVisible Then Debug.Print sht.Name
Next sht
End Sub
此过程类似,但摘录在活动工作表上列出了它们,而隐藏工作表则留有空白(就像您的示例所暗示的那样):
Sub ListSheets() 'list on worksheet
Dim sht As Worksheet
For Each sht In Worksheets
If sht.Visible = xlSheetVisible Then Range("A" & sht.Index) = sht.Name
Next sht
End Sub
可以从工作表公式中调用此函数,并按索引号列出您指定的工作表的名称。如果工作表未设置为“可见”或不存在,则返回""
(空字符串/无)。
Function listSheet(shtNum As Long) As String
On Error Resume Next
If Sheets(shtNum).Visible = xlSheetVisible Then listSheet = Sheets(shtNum).Name
End Function
工作表可见性有 三种 类型。