【发布时间】:2011-09-29 04:36:12
【问题描述】:
这是程序员 Reafidy 在 stackoverflow 上建议的代码。它按预期工作。 Need a better optimized code? 现在我必须为一个大文件重新使用相同的代码。
Sub Delete_Duplicate_Codes()
ThisWorkbook.Worksheets("Data").Activate
Dim vData As Variant, vArray As Variant
Dim lRow As Long
With ActiveSheet.Range("A3", Cells(Rows.Count, "A").End(xlUp)).Offset(, 52)
.FormulaR1C1 = "=RC[-24]&RC[-23]&RC[-19]&RC[-18]&RC[-17]&RC[-16]" ' I know what these meant concatenate A,B,F,G,H,I and I have changed it accordingly
vData = .Resize(, 1).Value
End With
ReDim vArray(1 To UBound(vData, 1), 0)
With CreateObject("Scripting.Dictionary")
For lRow = 1 To UBound(vData, 1)
If Not .exists(vData(lRow, 1)) Then
vArray(lRow, 0) = "x"
.Add vData(lRow, 1), Nothing
End If
Next lRow
End With
Application.ScreenUpdating = False
With ActiveSheet
.Range("BB3").Resize(UBound(vArray, 1)) = vArray
On Error Resume Next
.Range("BA34274", .Cells(Rows.Count, "BA").End(xlUp)).Offset(, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
.Columns(52).Resize(, 2).ClearContents ' throwing an error
End With
Application.ScreenUpdating = True
End Sub
他帮助了我,我们为此使用了 y 和 z 列现在我必须使用 BA 和 BB 列来完成这些任务。我不明白在哪里进行更改。我将 z 替换为“BB”,将 y 替换为“BA”列,但它在这些行抛出错误应用程序定义或对象定义
.Columns(52).Resize(, 2).ClearContents
我必须进行更改,前 1 和 2 行用于标题。单元格从第 3 行开始。请帮我处理这些代码。非常感谢任何帮助
我变了
.FormulaR1C1 = "=RC[-24]&RC[-23]&RC[-19]&RC[-18]&RC[-17]&RC[-16]" these to
.FormulaR1C1 = "=RC[-52]&RC[-51]&RC[-47]&RC[-46]&RC[-45]&RC[-44]" these
我想应该是对的
【问题讨论】:
-
Niko,代码工作正常吗?还是需要帮助?
-
@Reafidy 实际上我还没有测试代码!我正在从事其他活动,我将在星期一测试它我没有时间测试它
-
@Reafidy 在测试完代码后我会通知您是否需要进行任何更改并感谢您的帮助