【问题标题】:Creating multiple sheets in excel based on a column in a master sheet [closed]基于主工作表中的列在excel中创建多个工作表[关闭]
【发布时间】:2020-08-17 16:01:35
【问题描述】:

我有一个 Excel 文件,其中有记录,我想根据特定的列条件过滤这些记录。并且这些记录应该根据标准复制到其他多个工作表中。随着数据在主表中更新,数据也应该在相应的标准表中更新。

我已经尝试过使用“获取数据”=>“来自其他来源”=>“来自 Microsoft Query”的 Excel。下面我附上了图片。但是随着数据点的增加,它无法正常执行。如果在 MACRO 或 VBA 的帮助下可能有任何其他方式,请提供帮助。据我所知,上述内容类似于 SQL 查询并使用 WHERE 子句。

下面我附上了标准列是“位置”的图像,对于示例,我根据位置创建了工作表

以下是错误信息:

【问题讨论】:

    标签: sql excel vba where-clause criteria


    【解决方案1】:

    这是我最近创建的一个代码,大约有 1 个。这个结果:

    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim wn As String, col As String, col1 As Integer
    Worksheets("Master").Columns("A:A").Replace What:="", Replacement:=" ", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Worksheets("mod").Visible = True
    Worksheets("Master").Rows(1).Copy
    Worksheets("mod").Activate
    Worksheets("mod").Cells(1, 1).Select
    ActiveSheet.Paste
    Worksheets("Master").Select
    wn = InputBox("Criteria", "Criteria")
    col = InputBox("Specify column", "Main sheet")
    col1 = Columns(col).Column
    lastrow = Worksheets("Master").Cells(Rows.Count, 1).End(xlUp).Row
    With ThisWorkbook
    .Worksheets("mod").Copy after:=.Sheets(.Sheets.Count)
    ActiveSheet.Name = wn
    End With
    For i = 2 To lastrow
    If Worksheets("Master").Cells(i, col1) Like "*" & wn & "*" Then
    Worksheets("Master").Rows(i).Copy
    Worksheets(wn).Activate
    erow = Worksheets(wn).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    Worksheets(wn).Cells(erow, 1).Select
    ActiveSheet.Paste
    Worksheets(wn).Columns("A:ZZ").AutoFit
    Worksheets("Master").Activate
    End If
    Next i
    Application.CutCopyMode = False
    Worksheets("mod").Visible = False
    Worksheets("Master").Columns("A:A").Replace What:=" ", Replacement:="",LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    On Error Resume Next
    End Sub
    

    希望对您有所帮助并等待您的反馈!如果需要更多信息,请随时与我联系!

    【讨论】:

    • 嗨@Boni,非常感谢!!我们可以联系一下吗,实际上我从来没有使用过 VBA。所以,如果你能帮忙处理一下上面的代码,可以救我的命!!
    • 阅读How to avoid using Select in Excel VBA可能会让您受益。
    【解决方案2】:

    @Spandan 溃败 嗨,只需在第一张表中创建一个按钮并将此代码复制到 VBA 窗口中 创建一个名为“mod”的工作表(没有数据的空白工作表) 确保工作表“master”也可用......就是这样! 对于“标准”,请使用位置名称(波士顿、新德里、...) 对于“指定列”,在列 (A,B,C,...) 中键入,其中条件位于 (D 在本例中)

    【讨论】:

    • 我尝试了您的解决方案。但由于某些问题,我被困住了。因此,一旦代码运行,就会有一个用于我提到的标准的类型框,当我填写标准时,它会给我另一个框来填写“主工作表”,然后它给我一个类型不匹配的错误所以只是想确认我们需要在这些框中输入什么。
    • @Spandan Rout 你好,确实第一个类型框是用于标准的,您可以在其中介绍位置的名称(波士顿,...),在第二个类型框中您应该输入列参考,其中标准在您的主工作表中(A,B,C,D,...)...因此,如果 B 列主工作表中的条件 =“波士顿”,则第一个输入 = 波士顿,第二个输入 = B ...问候
    • 只是进一步查询,在运行代码时我收到一个错误“溢出”并且只有第一行被粘贴到新的标准表(只是标题)而不是数据。你能帮忙吗?非常感谢您的所有回复!
    • @Spandan Rout:尝试在 Dim 中用 Long 替换 Integer
    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 2023-03-10
    • 2021-06-10
    • 2019-01-21
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多