删除重复项并在VBA中保持格式

时间:2017-01-19 07:21:54

标签: excel-vba vba excel

我有一个代码可以从Sheet" ANAF ANGAJATORI",范围" A2:F1000"中删除重复项。重复标准:第1栏(A)和第1栏。第3栏(C)。 (它只删除A:F,因为在col.G上我有数据必须保持不被保护)。

问题是:

  1. 我希望在删除重复项后保留格式。

  2. 此外,我不想将给定范围指定为A2:F1000,因为数据条目是可变的,一旦它可以是A2到F100,其他时间是A2到F10000。它应该像A2:F。我想我应该定义一个lastrow和一个变量?

  3. 这是我的代码:

    Sub Duplicates()
         '
         ' Duplicates Macro
        Sheets("ANAF ANGAJATORI").Select
        ActiveSheet.range("A2:F1000").RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes
    End Sub
    

3 个答案:

答案 0 :(得分:1)

对于第二个问题,您可以尝试定义范围。

Dim x as Range
Set x = Worksheets("ANAF ANGAJATORI").Cells
ActiveSheet.range(x).RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes

<强>更新 这对我有用:

Dim row As Long
row = ActiveSheet.Range("F" & ActiveSheet.Rows.Count).End(xlUp).Row
ActiveSheet.Range("A2:F" & row).RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes

答案 1 :(得分:1)

我认为这解决了问题1

要使它工作,你需要添加一个名为“ANAF ANGAJATORI模板”的模板表,其中包含你需要的格式

在删除重复项后,它基本上将格式从模板复制到数据表中。

Sub duplicates()

    Sheets("ANAF ANGAJATORI").Select
    ActiveSheet.Range("A2:F1000").RemoveDuplicates Columns:=Array(1, 3), Header:=xlYes

    Sheets("ANAF ANGAJATORI Template").Columns("A:F").Copy
    Sheets("ANAF ANGAJATORI").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("A1").Select

End Sub

答案 2 :(得分:0)

<强> SOLUTION:

通过查找A列的最后一行然后定义范围A2来解决问题2 :F&amp; lastrow(A2起点到F到lastrow)。

关于第1号问题它实际上并没有保留格式,但它会根据您的意愿将您从您选择的单元格中复制出来并将其粘贴到指定的列上,从而导致重新格式化整个工作表(包括删除重复项留下的空白未格式化空格)。 它最终会得到相同的结果:保持格式化。

在下面的例子中,A2000在表格中编号为无小数的数字,C2000为文本。

applications:
# The Python app starts here
- name: yourname-myapp
  memory: 256M
  command: python myapp.py
  routes:
  - route: myapp.mybluemix.net/app-path