在数据透视表中搜索值,然后将其复制到其他工作表中

时间:2019-04-09 19:30:24

标签: excel vba

我正在创建一种工具来跟踪公司中多个站点的项目人工成本。我遇到了一个实施此问题,因为并非每个月都在完成所有项目。因此,无论是否进行了工作,我都必须修改该工具以说明每个月的所有项目。

我需要在数据透视表中搜索17个单独的字符串,如果找到该字符串,则将该字符串下面的所有单元格复制到另一个计算成本的选项卡中。这种查找和复制功能是我遇到的问题。

我创建了一些代码,该代码复制了特定于字符串位置的数据,但是没有考虑到项目标题(字符串)在运行时每个月都在此表中的同一位置的事实。但是,将要复制此数据的位置不变。

感谢任何指导以帮助我入门...

1 个答案:

答案 0 :(得分:0)

这是基于您在评论中发布的代码。我使用以下方法找到了所需范围:

    标题下方的数据的
  1. 第一行(假定为第4行)
  2. 最后一行的数据(通过查找包含数据单元格的最大行来计算)
  3. 项目标题匹配的

Sub TRM0000()

Dim Ws As Worksheet Dim firstRow As Long Dim lastRow As Long Dim column As Long Dim Calc As Range Set Ws = Sheets("PivotTable") firstRow = 4 lastRow = Ws.Cells.Find(What:="*", SearchDirection:=xlPrevious).Row column = Ws.Range("C3:Z3").Find(What:="TRM-0000", LookIn:=xlValues, LookAt:=xlWhole).column Set Calc = Ws.Range(Ws.Cells(firstRow, column), Ws.Cells(lastRow, column)) Calc.Copy Sheets("Cost Calc").Range("B5").PasteSpecial xlValues End Sub

这应该是此特定项目标题的解决方案。但是,您说您有17个!我建议不要存储每个项目的代码,而建议存储17个项目标题(可以在工作簿的选项卡中或在VBA代码中枚举),创建一个for循环以遍历该列表,并生成项目标题和输出范围引用在VBA代码中是动态的。