2017-01-16 40 views
0

的数据显示,我有一个表的数据,在各列各月,各行都有一个唯一的标识符(在这种情况下,名称)。下拉列表从另一片

有没有一种方法,我可以在另一个工作表,有一个下拉框,以便我可以选择一个日期和片材然后返回从这些日期数据的所有条目?

下面是数据类型的一个非常基本的版本对应的链接我的工作: https://docs.google.com/spreadsheets/d/1LgTKxXuQ9hdq-ruJWcto7A002ks4R2koGx0vtiHZHXQ/edit?usp=sharing

+1

是的,有办法做到这一点。你有没有自己尝试过任何东西? – harun24hr

+0

是的,我试过了。我花了整整一个早上。我尝试了数据透视表,但是我无法得到我之后的结果。 – danjswade

+0

分享一些样本数据和预期输出。如果你能分享一个样本excel文件,那会更好。一些输入和输出。 – harun24hr

回答

0

我想出了这个小码:

Option Explicit 


Private Sub Worksheet_Change(ByVal Target As Range) 

Dim lastRow, targetCell, sourceRng, cell, nameRng, startRng, ddownCell As Range 

Set ddownCell = Worksheets("Sheet2").Range("B1") 
Set sourceRng = Worksheets("Sheet1").Range("C2:O10") 
Set nameRng = Worksheets("Sheet1").Range("A2:A10") 
Set startRng = Worksheets("Sheet1").Range("B2:B10") 
Set targetCell = Worksheets("Sheet2").Range("A5") 

If Not Application.Intersect(ddownCell, Range(Target.Address)) Is Nothing Then 

With Worksheets("Sheet2")        ' 
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' 
    If lastRow > 3 Then         'clears the content of previous search 
     .Range("A5:B" & lastRow).ClearContents   ' 
    End If            ' 
End With            ' 

For Each cell In sourceRng 
    If cell.Value = ddownCell.Value Then 
     targetCell.Value = nameRng.Rows(cell.Row - 1).Value 
     targetCell.Offset(0, 1).Value = startRng.Rows(cell.Row - 1).Value 
     Set targetCell = targetCell.Offset(1, 0) 
    End If 

Next cell 
End If 
End Sub 

工作表名称和单元格范围根据您发布的样本进行调整,并需要进行调整。

此代码应被粘贴到Sheet2中的VBA编辑器。

相关问题