删除命名范围内的重复项

时间:2016-01-04 00:10:52

标签: excel vba excel-vba named-ranges

我有一个问题,我相信你会找到一个简单的解决方案 我很满意这个

我有从其他工作簿复制范围的代码,将其粘贴到当前工作簿中,然后删除重复项

问题是,在删除重复项后,它认为范围仍然与删除重复项之前一样长(包括空格)

示例:

allcontacts是1-10行

我从另一个工作簿粘贴10行 3是新的,所以它删除了7个重复

我的范围(在名称管理员中)应该是1:13,但它显示1:20,底部有7个空白

'Dim currentworkbook As String
'currentworkbook = ActiveWorkbook.Name
'Workbooks.Open ("q:\mis\_estimatorm1.xlsm")
  'Workbooks("_estimatorm1.xlsm").Worksheets("contacts").Range("Allcontacts").Copy
'Workbooks(currentworkbook).Activate
'Sheets("contacts").Rows("3:3").Select
'Selection.Insert Shift:=xlDown
'Application.CutCopyMode = False

 '     Sheets("contacts").Activate
 '     Cells.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder _
  '      :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

ActiveSheet.Range("allcontacts").RemoveDuplicates Columns:=Array(1, 3, 4), Header:=xlNo


'Columns("A:m").Select

   ' ActiveWorkbook.Worksheets("CONTACTS").Sort.SortFields.Clear
    'ActiveWorkbook.Worksheets("CONTACTS").Sort.SortFields.Add Key:=Range( _
     '   "A2:A2000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
      '  xlSortNormal
    'With ActiveWorkbook.Worksheets("CONTACTS").Sort
     '   .SetRange Range("A1:m2000")
      '  .Header = xlYes
       ' .MatchCase = False
        '.Orientation = xlTopToBottom
        '.SortMethod = xlPinYin
        '.Apply
    'End With
Sheets("QUOTE").Activate
Range("A10").Select

除了我知道导致问题的代码行之外,我做了所有注释

1 个答案:

答案 0 :(得分:4)

返回公式►名称管理器并重新定义所有联系命名范围,以便参考:是动态的。像,

'allcontacts Refers to:
=CONTACTS!$A$1:INDEX(CONTACTS!$M:$M, MATCH("zzz", CONTACTS!$A:$A))

它假定A列中的文本,而A列通常始终具有值。如果你在A栏中有数字那么就是,

'allcontacts Refers to:
=CONTACTS!$A$1:INDEX(CONTACTS!$M:$M, MATCH(1e99, CONTACTS!$A:$A))