VBA Excel - 查找值并复制相应的单元格

时间:2015-08-18 18:48:18

标签: excel vba excel-vba

我有一张包含多张纸的工作簿。 Sheet1根据我们在其他工作表中输入的信息,作为一种操作项的摘要。

在Sheet1中,A列标题为Tester,在此之下我们手动输入该组需要检查的缺陷编号。

在Sheet2中,我们列出了所有缺陷。每个缺陷都有自己的行。 A列具有所有唯一的缺陷编号(例如,Defect001,Defect002,Defect003)。

在B栏中,我们有一个下拉列表,其中包含可以分配缺陷的所有组(例如,Tester,Developer,Client)。

其他列具有缺陷的各种详细信息,严重性,SLA时间等。

现在,我们将所有信息输入到Sheet2中,然后转到Sheet1并输入需要处理它们的团队下的缺陷编号。

我想删除所有这些的手动组件。相反,我希望在Sheet2中输入的缺陷自动显示在Sheet1上相应的组下。

因此,在Sheet2上,我有一个绑定到宏的按钮,用于更新工作簿中的各个字段。

我想向该宏添加一些将执行以下操作的功能:

  • 查看表2,B栏

  • 对于B列中值为Tester的每一行,转到A列中的相应单元格以获取缺陷编号。

  • 返回测试仪列(A列)下的Sheet 1,我希望列出每个缺陷。

因此,如果Sheet2具有全部分配给Tester组的Defect001,Defect003和Defect005,那么这些值将出现在Sheet1中Tester列下的一个单元格中。

由于有些人认为我要求他们为我做所有工作,所以让我澄清一下我不是。我只需要一个起点......让我朝着正确的方向前进。我感谢任何能让我沿着正确的道路前进的代码或链接。

如果我需要提供更多详细信息或信息,请告诉我。

感谢您的帮助。

==============

根据要求,这是我到目前为止尝试过的代码片段:

For i = 1 To 5000
If ActiveSheet.Cells(i, 12).Value = "Tester" Then
MsgBox "This Works"
End If
Next i

我试图找出如何通过枢轴调用信息:

Sub ListAllItemObjects()
For Each pvt In ActiveSheet.PivotTables
For Each fld In pvt.PivotFields
For Each itm In fld.PivotItems
MsgBox itm
Next itm
Next fld
Next pvt
End Sub

1 个答案:

答案 0 :(得分:1)

想出一个解决方案。可能不是最好的。由于FindWindow非常有帮助,我不是VBA的专家。

这可能需要进一步调整以完成我想要的任何事情,但现在它的效果还不错。

所以要找到我想要的值,对应于B列中带有Tester的任何行:

Sub UpdateStatusSummary()


For i = 1 To 5000
For Each cell In ActiveSheet.Cells(1, 2)
      If ActiveSheet.Cells(i, 2).Value = "Tester" Then
      ThisWorkbook.Sheets("Data").Cells(i, 10).Value = ActiveSheet.Cells(i, 1).Value

    End If
Next
Next i

End Sub

使用分配了Sub的按钮/图形调用此Sub(将更改为Private Sub)。

为了将数据表中的值放回到Sheet1上的一个单元格中,我选择了这个:

Function csvRange(myRange As Range)
Dim csvRangeOutput
For Each entry In myRange
    If Not IsEmpty(entry.Value) Then
        csvRangeOutput = csvRangeOutput & entry.Value & ","
    End If
Next
csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1) 

End Function

在您希望数据表中的逗号分隔值进入的单元格中使用= csvRange(Data!J2:J5000)。

在玩了一段时间之后,可能也可能会更好。如果我做出任何重大突破或改变,我一定会发布它们。

如果有人有任何反馈或更好的方法,我会非常感谢建设性的批评。

相关问题