2017-06-05 55 views
-2

我有一个主数据集在一个表像这样如何根据单元格值

enter image description here

在另一片我想基于这个主数据集提取数据从一个表中的数据复制到另一个在一个单元格值将有部门作为标准。

因此,例如,如果在表2我型我我部标准为销售,所有与系行作为销售应在表获取填充2.

enter image description here

可以这样用Excel来完成函数/宏/ VBA? 在此先感谢。 请原谅我,如果您发现此查询荒谬。

+3

是的,它可以做到。告诉我们你到目前为止尝试过什么。 – ManishChristian

回答

0

是的,它可以做到。将此代码添加到工作簿中的模块。您可以直接从调试器运行它,或者转到宏并为其分配一个热键,或者您可以在工作表上创建一个按钮,并将此代码放入按钮单击事件中。有可能是更有效的方法来做到这一点,但除非你有很多数据,否则它应该不重要。我已经很清楚,所以你可以看到发生了什么。我已经使用表格名称“数据”和“视图”,您将不得不更改代码中的名称以匹配您的工作簿。

编辑:我还假设你的屏幕截图左上方的单元格是A1,如果不是,你将不得不调整代码。

Sub GetDepartments() 

Dim LastRow As Long 
Dim MyRange As Range 
Dim SourceRow As Long 
Dim DeptValue As String 
Dim OutputRow As Long 
Dim ColCounter As Long 

'get size of current view sheet and clear 
LastRow = ThisWorkbook.Worksheets("View").Cells(ThisWorkbook.Worksheets("View").Rows.Count, "A").End(xlUp).Row 
If LastRow > 7 Then 
    Set MyRange = ThisWorkbook.Worksheets("View").Range("A7:C" & LastRow) 
    MyRange.ClearContents 
End If 

'get size of data sheet 
LastRow = ThisWorkbook.Worksheets("Data").Cells(ThisWorkbook.Worksheets("Data").Rows.Count, "A").End(xlUp).Row 
'get value to match 
DeptValue = ThisWorkbook.Worksheets("View").Cells(3, 2).Value 

'track outputrow 
OutputRow = 7 

'loop through all rows in data 
For SourceRow = 2 To LastRow 
    'if match found 
    If ThisWorkbook.Worksheets("Data").Cells(SourceRow, 2).Value = DeptValue Then 
    'copy 3 cols 
    For ColCounter = 1 To 3 
     ThisWorkbook.Worksheets("View").Cells(OutputRow, ColCounter).Value = _ 
     ThisWorkbook.Worksheets("Data").Cells(SourceRow, ColCounter).Value 
    Next ColCounter 
    'increment outputrow 
    OutputRow = OutputRow + 1 
    End If 
Next SourceRow 
End Sub 
相关问题