识别不可见图纸的公式

时间:2018-09-13 07:02:33

标签: excel excel-vba excel-formula

我有以下简单的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 ""

您知道如何解决此问题吗?

1 个答案:

答案 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

img


相关说明:

工作表可见性有 三种 类型。

img


更多信息: