0

我被要求为我不填充的 excel 文件创建摘要工作表。这些是“每月”的 Excel 文件,工作表“通常”以开始日期命名。我说“通常”是因为拼写错误可能会蔓延或不允许在创建工作表名称之前对其进行预测。在相关周开始之前,不会创建工作表。

我正在尝试做的事情,尽管正在努力,是创建一些 VBA 代码来将每个工作表中的许多单元格和范围复制到将被隐藏的摘要工作表中。工作表都遵循相同的格式,主要信息是:A1 作为开始日期,O4 到 R4 作为 4 个汇总列标题,N5 到 N30 作为用户名信息。然后根据工作表中的数据,O5 到 R30 在其中进行计数。

我想创建一些代码,在每个非空白用户名(N5:N30)旁边复制周开始日期(A1)以及相应行中的值。由于 O4 到 R4 中的列标题不会更改,因此它们可以在汇总表上保持不变。

恐怕我对vba不太了解。我想我会使用 Worksheets.Count 来查找工作表的数量?打算在这里修改代码,但我不知道如何确保每行数据在摘要工作表中换行?

4

2 回答 2

0

使用 ozgrid 示例,但进行以下更改:

.Range("A1").

.Range("A" & l).

然后用更多问题+您正在使用的实际代码修改您的原始帖子。

于 2012-12-06T12:39:06.853 回答
-1

我已经用以下可能或多或少与您的查询相关的 ozgrid 代码进行了修改。如果您可以将查询改写为更多的任务 1、任务 2 方式,那么将以下脚本更改为您想要的内容将很容易。

下面的脚本只是作为一个模块而不是更易于控制的工作表事件工作,只需创建一个子模块并将其复制粘贴到那里然后运行它,或者您也可以在工作表上创建一个按钮来运行,使用开发选项卡并选择链接到宏 SplitWs 的表单或 activex 按钮。

Sub SplitWs()

Dim wSheet As Worksheet, ws As Worksheet
Dim i As Long

Set wSheet = ThisWorkbook.Worksheets(1)

i = 1

    With wSheet
        .Columns(1).ClearContents
        .Cells(1, 1) = "INDEX"
        .Cells(1, 1).Name = "Index"
    End With


    For Each ws In Worksheets
        If ws.Name <> wSheet.Name Then
            i = i + 1
                With wSheet
                    .Range("A1").Name = "Start_" & wSheet.Index
                    .Hyperlinks.Add Anchor:=.Range("A1"), Address:="", _
                    SubAddress:="Index", TextToDisplay:="Back to Index"
                End With

                wSheet.Hyperlinks.Add Anchor:=wSheet.Cells(i, 1), Address:="", _
                SubAddress:="Start_" & wSheet.Index, TextToDisplay:=wSheet.Name
        End If
    Next ws

End Sub

我还将“l”变量更改为更易于阅读的“i”。

希望对您有所帮助,否则请对要修改的内容发表评论。

帕斯卡

http://multiskillz.tekcities.com

于 2015-07-31T16:57:47.523 回答