我有一个包含多个工作表的 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 等进行排序。但我似乎无法将解决方案放在一起。
改编自代码这里
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