Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何根据工作表名称中包含的用户输入将特定列复制到新工作表?_Excel_Vba - Fatal编程技术网

Excel 如何根据工作表名称中包含的用户输入将特定列复制到新工作表?

Excel 如何根据工作表名称中包含的用户输入将特定列复制到新工作表?,excel,vba,Excel,Vba,我正在为一些医疗编码人员的同事开发一个审计跟踪表,并希望编写一个宏,使他们能够轻松地总结他们正在跟踪的信息。工作流程如下所示 选择一名医生进行审计 每个患者都创建了自己独特的选项卡,其中包含他们的特定信息 审核在每张表中进行 审计完成后,我需要为一位医生总结所有的变化。所有图纸的命名约定以及结构都相同 我希望让他们运行一个宏,从工作簿中包含医生姓氏的每张工作表中复制列“R:T”,并将它们堆叠在一张新工作表中。但是,我希望从宏创建此新工作表,并且该工作表的名称将是用户输入。我希望这是清楚的。如果有

我正在为一些医疗编码人员的同事开发一个审计跟踪表,并希望编写一个宏,使他们能够轻松地总结他们正在跟踪的信息。工作流程如下所示

  • 选择一名医生进行审计

  • 每个患者都创建了自己独特的选项卡,其中包含他们的特定信息

  • 审核在每张表中进行

  • 审计完成后,我需要为一位医生总结所有的变化。所有图纸的命名约定以及结构都相同

    我希望让他们运行一个宏,从工作簿中包含医生姓氏的每张工作表中复制列“R:T”,并将它们堆叠在一张新工作表中。但是,我希望从宏创建此新工作表,并且该工作表的名称将是用户输入。我希望这是清楚的。如果有人需要更多细节,请告诉我。下面的代码是我开始的地方,但我需要帮助才能进一步。请看下面

    Sub Summary_Sheet()    
        Dim sArr() As String, Cnt As Long, WS As Object
        Dim newName As String
        ReDim sArr(0)
    
        newName = InputBox("Enter Doctor's Last Name")
    
        Sheets.Add After:=Worksheets(Sheets.Count)
        ActiveSheet.Name = newName
    
        Cnt = 0
        For Each WS In ActiveWorkbook.Sheets        
            If InStr(WS.Name, newName) Then
                ReDim Preserve sArr(Cnt)
                sArr(Cnt) = WS.Name
                Cnt = Cnt + 1
            End If        
        Next
    
        If Cnt > 0 Then Sheets(sArr).Select
        Set WS = Nothing
    End Sub
    
    当前,代码将仅创建新图纸,不会基于新图纸名称进行选择。我知道for循环需要复制和粘贴每个单独的工作表,而不是选择所有工作表,但我想求助于专家


    最终,被复制的列需要删除重复项,我需要将工作表保存为漂亮的PDF格式,但我需要首先解决这个问题。任何帮助都将不胜感激!谢谢

    一些截图会有所帮助。不管怎么说,你是试着创建一些代码还是仅仅是在帖子上创建的代码?我建议您使用宏录制器来录制一个示例,尽可能多地进行清理,然后带上新代码。你似乎要求我们开发你的代码,所以这不是一个免费的编码服务。你不需要为此创建数组。Pablo,当您已经在工作表中循环并将它们粘贴到您创建的新工作表中时,尝试复制这些列,而不是将它们添加到起点的ArrayTanks中。我已经将代码简化为以下内容,但我认为它对于我试图捕获的内容来说太简单了。在调用“复制”函数之前,我需要什么。For循环和数组对我来说是新的。”子摘要\工作表()将WS作为对象将newName作为字符串设置为newName=InputBox(“输入医生的姓氏”)工作表。添加到:=工作表(Sheets.Count)ActiveSheet.Name=newName,用于ActiveWorkbook中的每个WS。工作表如果InStr(WS.Name,“newName”),则单元格(“C8:C8”)。复制工作表(“测试”)。范围(“C8”).Paste End如果Next End Sub'@DavidGarcíaBodego我确实通过复制和粘贴其他源代码创建了该代码。不需要写任何东西,只是这个循环的一个起点,因为这是我的第一个循环欢迎使用SO!当你提出一个问题时,试着增加一个最低限度的内容:输入样本、预期输出样本、你尝试了什么、研究和你在哪里卡住了@格宾格尔。由于没有屏幕截图,我们不知道您的数据是如何处理的以及您拥有哪种数据。您没有公开哪个是您期望的输出。