Excel 2016,获取包含特定值

时间:2018-01-23 01:49:51

标签: excel excel-2016

我有一张excel表,其中有许多列,每列都有一个唯一的标题 这些列包含日期

我需要制作一份报告(如Pivot表),以获取指定日期的所有列标题

我试着在这里给出一个例子,但我不能在下面包含一个示例工作簿,我还添加了一个描述数据构建方式的屏幕截图

屏幕截图:

enter image description here

Example Workbook

我需要的是一个类似于数据透视表的报告,例如,如果我选择了Month April.2019,那就是为了给我提供包含此值的所有列标题

我知道在原始数据中,如果我为每个日期创建一个新行,而只有一列我可以使数据透视表工作

我在问这个

是否有任何办法

提前致谢

1 个答案:

答案 0 :(得分:0)

如下所示,只要您在报告的A1中输入要搜索的日期,就会搜索“稳定性表”并将所有找到的列标题放在“工作表报告”的B列中:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Stability")
Dim wsReport As Worksheet: Set wsReport = Sheets("Report")
'declare and set your worksheet, amend as required
icounter = 0
X = Format(wsReport.Cells(1, 1).Value, "dd.mmm.yyyy")
'above enter value to search for in Sheet Report A1
Set valuefound = ws.Range("AG3:BI5000").Find(What:=X, LookIn:=xlValues)
'above look for value X in column B
If Not valuefound Is Nothing Then 'if found then
    foundaddress = valuefound.Address 'save the address of the first instance found
    LastRow = wsReport.Cells(wsReport.Rows.Count, "B").End(xlUp).Row + 1
    wsReport.Cells(LastRow, 2).Value = ws.Cells(2, valuefound.Column)
    FoundAt = ws.Cells(2, valuefound.Column)
    Do
        Set valuefound = ws.Range("AG3:BI5000").FindNext(valuefound) 'find next value
        LastRow = wsReport.Cells(wsReport.Rows.Count, "B").End(xlUp).Row + 1
        wsReport.Cells(LastRow, 2).Value = ws.Cells(2, valuefound.Column)
    Loop While Not valuefound Is Nothing And valuefound.Address <> foundaddress
End If
End Sub