Excel索引/目录 – macros

我正在读一些使用macros来自动创build目录的代码。 我有一个工作簿与多个工作表,每天都在添加新工作表。 每个工作表名称是一个唯一的编号,里面有相同的模板。

我看到的代码只会给出一个索引与工作表名称的选项。

我想知道如果我能得到一个选项,也将从每张表中select一个或两个值,如下所示:

Sr编号表格名称单元格A1单元格A2单元格A3

每次打开“索引”表单并将“表单名称”列超链接到工作表时,我都需要运行“macros”。

有任何想法吗?

提前感谢任何帮助!

这个代码基于http://www.ozgrid.com/VBA/sheet-index.htm多年以来。

在修改的代码中,第1列将包含工作表索引,第2列将显示所有工作表的单元格A2和A3的提取。 请注意,索引表第1,2和3列的旧内容将被彻底删除!

Private Sub Worksheet_Activate() Dim wSheet As Worksheet Dim i As Long i = 1 With Me .Columns(1).ClearContents .Columns(2).ClearContents .Columns(3).ClearContents .Cells(1, 1) = "INDEX" .Cells(1, 1).Name = "Index" End With For Each wSheet In Worksheets If wSheet.Name <> Me.Name Then i = i + 1 ' ' in the WorkSheet: set up link to return to the index sheet from: ' With wSheet .Range("A1").Name = "Start" & wSheet.Index .Hyperlinks.Add Anchor:=.Range("A1"), Address:="", _ SubAddress:="Index", TextToDisplay:="Back to Index" End With ' ' in the Index WorkSheet: set up link to go to WorkSheet: ' Me.Hyperlinks.Add Anchor:=Me.Cells(i, 1), Address:="", _ SubAddress:="Start" & wSheet.Index, _ TextToDisplay:=wSheet.Name ' Me.Cells(i, 2).Value = wSheet.Range("A2").Value Me.Cells(i, 3).Value = wSheet.Range("A3").Value ' End If Next wSheet End Sub 

我没有VBA这样做。 这将创build一个自填充索引表,从每个工作表中获取信息。

自动填充索引表

  1. Name Manager创build一个名为wshNamesNew Name ,其值为: =RIGHT(GET.WORKBOOK(1),LEN(GET.WORKBOOK(1))-FIND("]",GET.WORKBOOK(1)))

  2. 创build一个内容工作表,将其移动到工作簿中最左边的选项卡(即位置1)。

  3. 插入一个新的数据表。

  4. 在第一列input数字1-50(或足够覆盖您将使用的工作表的最大数量)。 这些将是您的工作表索引ID。

  5. 在第2列中,我们将使用公式自动填充工作表名称。 如果第一个工作表ID号(1)在单元格B5 ,请使用此。 RAND()*0保持公式不稳定,并强制Excel在任何更改时刷新它。 =IFERROR(INDEX(wshNames,1+B5+RAND()*0),"")

  6. 您可以使用此公式在下一列中检索每个工作表中的数据: =IFERROR(INDIRECT("'"&C5&"'!C2"),"") ,其中C2是要从目标工作表中获取的单元格, C5是第2栏中的工作表名称。

  7. 如果你想input一个超链接来跳转到工作表,请在第4列中使用: =IF([@[Your Column 2 Heading]]="","",HYPERLINK("#'" & C5 & "'!A1", [@[Your Column 2 Heading]])) 。 你可以调整这个,因为你需要它来显示不同的链接文字。

  8. 重复此公式多次,因为您需要从工作表中添加更多的数据。

  9. 可选:添加条件格式来隐藏未使用的行。

注意 :步骤1依赖于XLM公式。 更多关于这里 – 请注意,您仍然需要保存为.xlsm。 这个技巧是从David Hager借来的。