Excel中的AdvancedFilter在有2个以上的唯一值时提供了良好的范围,但在只有1个时失败

时间:2014-06-06 18:39:48

标签: excel vba filter

在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

我想要创建:

  1. 工作簿A.xlsx,包含:
    1. 名为A的工作表,包含所有A记录
    2. 一个名为X的工作表,其中包含A
    3. 中的所有X记录
    4. 一个名为Y的工作表,其中包含A
    5. 中的所有Y记录
    6. 一个名为Z的工作表,其中包含A
    7. 中的所有Z记录
  2. 工作簿B.xlsx,包含:
    1. 名为B的工作表,包含所有B记录
    2. 一个名为L的工作表,其中所有L记录都在B
    3. 一个名为M的工作表,其中包含B
    4. 中的所有M条记录
    5. 一个名为N的工作表,其中包含B
    6. 中的所有N条记录
  3. 工作簿C.xlsx,包含:
    1. 名为C的工作表,包含所有C记录
    2. 一个名为X的工作表,其中包含C
    3. 中的所有X记录
  4. 我的代码很有效,因为每个主要群体(例如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
    

    我有一种感觉,如果我明白这个范围意味着什么,我就会解决问题的核心并能够解决问题。

    感谢您的帮助!

0 个答案:

没有答案