【问题标题】:Excel autofill between worksheets工作表之间的 Excel 自动填充
【发布时间】:2015-03-19 11:57:19
【问题描述】:

我有一个包含约 300 个类似工作表和 1 个带有名称列表的工作表的 excel 文档。这 300 个工作表中的每一个都有一个特定的单元格,我需要在其中填写列表中的名称。列表和工作表的顺序相同(例如 sheet1 需要 List!C1 中的名称,sheet2 需要 List!C2 中的名称等)。我查看了 VLOOKUP,但没有任何可以使用的参考数据。

【问题讨论】:

    标签: excel


    【解决方案1】:

    我认为对于类似的任务,您需要像这样使用 VBA 宏:

    Sub DataFromList()
    
    Dim nameSht As String: nameSht = "List"
    Dim shtList As Worksheet
    Set shtList = ThisWorkbook.Worksheets(nameSht)
    
    Dim columnWithData As String: columnWithData = "C"
    Dim n%: n = 0 ' start from 1 row (0 + 1)
    
    ' specific cell where you need to fill a name from the list
    Dim addressForData As String: addressForData = "B2"
    
    For Each sht In ThisWorkbook.Worksheets
        If sht.Name <> nameSht Then
            n = n + 1
            sht.Range(addressForData).Formula = "=" & nameSht & "!" & columnWithData & n
        End If
    Next sht
    End Sub
    

    当然,只有在所有工作表中“特定单元格”的地址相同时才有可能

    【讨论】:

    • 完美运行!谢谢!
    • 您的代码是可靠且可维护的,并且通常是最好的(假设我 认为 的可靠预期迭代器顺序是正确的)。但是我想指出,与您的第一句话假设相反,假设工作表命名一致,则不需要 VBA。您可以选择所有工作表,然后取消选择列表并输入一个从工作表名称中去除 n 的 INDIRECT 公式。
    • 当然,代码可以给出顺序,这是行不通的(如果工作表被移动或重命名,就会发生这种情况,并且发出的顺序将与按名称排序不同)。但是我们总是可以先对工作表名称的数组进行排序,然后将公式添加到工作表中。这并不难,但在我看来,对于可能的解决方案的第一个示例来说,这似乎是不必要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2021-04-13
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多