在Excel 2013中,我在A到Z列中有一个数据集。对于B列中的每个不同值,我创建一个新工作簿并将B的这些值的所有AZ数据复制到新书中的主表中。然后,我为B的每个唯一值创建一个单独的数据表。
,例如:
A B C
-----
A X 1
A Y 5
A Z 6
B L 7
B M 0
B N 1
C X 7
我想要创建:
我的代码很有效,因为每个主要群体(例如A和B)都有超过一个小组。即,它适用于主要群体A和B,但它在主要群体C上窒息。这是相关的代码块:
' So now we have the new book with the stage-1-filter data.
' Now let's make a stage-2 filter just like we did with stage-1
WBN.Activate 'This the new workbook
WBN.Sheets(wbval).Activate 'Activate sheet for the 2ndary values
Set sRngFilter = Range("C3", Range("C" & Rows.Count).End(xlUp)) 'Filter on this column. Rows 1-3 are headers, first value is in row 4.
Set sRngResults = Range("A1", Range("Z" & Rows.Count).End(xlUp)) 'Once the filter is applied, these are the cells to copy
sRngFilter.AdvancedFilter Action:=xlFilterInPlace, Unique:=True 'Apply the filter to show the distinct values in column C
Set sRngUniques = Range("C4", Range("C" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) 'Make a range that refers to the values that are shown when the filter is applied.
在调试器中,我得到一些奇怪的东西,我希望这是一个线索:当我应用一个最终有多个值的过滤器时,我得到一个看起来合理的范围:
debug.Print sRngUniques.Address
$C$4,$C$11
但是当我应用过滤器只产生一个不同的值时,范围看起来(对我而言)就像废话一样......它是所有数字:
debug.Print sRngUniques.Address
$1:$4,$11:$1048576
我有一种感觉,如果我明白这个范围意味着什么,我就会解决问题的核心并能够解决问题。
感谢您的帮助!