【问题标题】:Loop through sheets and particular cells on sheets遍历工作表和工作表上的特定单元格
【发布时间】:2018-03-08 21:17:57
【问题描述】:

我有一张带有概览的 Excel 表格(第一个选项卡), 有两列 - company_name 和 price 并且有大约 50 个以下工作表(以个别公司命名)。

我想自动生成概览。

因此,当添加带有公司名称的新工作表时,它将被添加到 概览(第一页)在其列下,当添加价格时,它将 被添加到其列下的概览中。价格始终在单元格中 D21 在由公司名称标识的工作表上。

所以在第一个(概述)表中,会有一个映射

company_name | price
AAA (second sheet name) | secondsheet!D21
BBB (third sheet name)  | thirdsheet!D21
CCC (fourth sheet name) | fourthsheet!D21
... etc.

如何插入这样的公式或为其创建事件驱动的宏?

【问题讨论】:

  • Can I insert such a formula? 不是真的,有一些使用命名范围的复杂方法。 Or create event driven macro for it?是的。

标签: excel excel-formula vba


【解决方案1】:

将其放入第一张工作表的工作表代码中。

Private Sub Worksheet_Activate()
Dim i As Long
Me.Range("A2:B1000").ClearContents
For i = 2 To Worksheets.Count
    Me.Cells(i, 1) = Worksheets(i).Name
    Me.Cells(i, 2).Formula = "='" & Worksheets(i).Name & "'!D21"
Next i
End Sub

现在每次激活工作表时,它都会清除并使用正确的公式重新填充列表。它迭代工作表并用指向 D21 的名称和公式填充单元格。

【讨论】:

    【解决方案2】:

    我会创建一个宏来遍历所有工作表并在概览工作表中插入适当的行。

    遍历工作表:For Each s In ActiveWorkbook.Sheets

    在此循环中,s.Name 将是工作表名称,应该很容易在概览工作表中创建一行,其中包含引用该工作表 D21 值的公式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 2017-02-12
      • 2015-01-12
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多