根据工作表名称从多个工作表中提取数据

问题描述 投票:0回答:1

我有一个包含多个工作表的 Excel 工作簿。这些表格的组织方式如下:

'公司 1','公司 1 新闻','公司 1 职位','公司 2','公司 2 新闻','公司 2 职位','公司 3' ...

我需要使用“工作”工作表 B 列中包含文本的标准,将数据仅从工作表名称中包含“工作”的工作表中提取到标题为“机会”的工作表中。

公司(表)数量增加/减少;因此,我在工作表数组的开头和结尾使用了“BEGINNING”和“DIVIDER”选项卡。

以下公式可以从所有工作表中提取我需要的数据;但是,我需要将其过滤为仅包含“... Jobs”表中的数据。

=FILTER(VSTACK(BEGINNING:DIVIDER!A13:M513),VSTACK(BEGINNING:DIVIDER!B13:B513)<>"","NO CURRENT OPPORTUNITIES")

我研究了不同的宏来尝试按工作表、VLOOKUP、FILTER 等进行排序。但我似乎无法将解决方案放在一起。

excel vba filter
1个回答
0
投票

改编自代码这里

Sub Filter_Jobs_Sheets()
    Dim dict As Object
    Set dict = CreateObject("scripting.dictionary")
    Dim sh As Worksheet
    For Each sh In ThisWorkbook.Worksheets
        If InStr(1, sh.Name, "jobs", vbTextCompare) Then dict.Item(sh.Name) = sh.Evaluate("Filter(A13:M513, B13:B513 <> """", ""NO CURRENT OPPORTUNITIES"")")
    Next sh
    
    Dim it As Variant
    For Each it In dict.items
        Worksheets("Opportunities").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(UBound(it), UBound(it, 2)) = it
    Next it
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.