VBA – 添加重复表单并将输出转换为行

我有以下数据集,其中包含重复项。

values: 2880CR-20.36KX53305DECOAK2015 F05572-CN48517OCTOAK2016 F05572-CN48517DECOAK2016 F05572-CN48517NOVOAK2015 F05572-CN48517NOVOAK2015(duplicate) F05572-CN48517DECOAK2015 F05573-CN48517JANOAK2016 F05573-CN48517FEBOAK2016 F05573-CN48517JANOAK2015 F05573-CN48517FEBOAK2015 F05573-CN48517MAROAK2015 F05573-CN48517APROAK2015 F05573-CN48517APROAK2015(duplicate) 

我正在尝试创build一个macros,它将查看A2:A(列中的行数)列A中的值,并返回声明为“strMyDupList”的string中包含的重复值列表。 基本上,如果有至less1个重复,msgbox会popup,并与列的地址和值创build新的工作表,我试图列出所有的价值分隔我的逗号VERTICALLY,而不是水平横跨工作表。 如此:

 Address value $A$5 F05572-CN48517NOVOAK2015 $A$13 F05573-CN48517APROAK2015 

我的代码是:

 If strMyDupList <> "" Then MsgBox "The following entries have been used more than once:" & vbNewLine & strMyDupList Worksheets.Add.name = name Worksheets(name).Range("A1").Value = "Location" Worksheets(name).Range("B1").Value = "Value" ' Worksheets(name).Range("A2:C2").Value = Split(strMyDupList, ",") Worksheets(name).Range("B4:B6") = Split(Application.WorksheetFunction.Transpose(strMyDupList), ",") 

结果是,我能够将值从水平转换为垂直,但是,使用此代码,它只返回string中的值列表中的第一个值,因此返回:

 Address value $A$5 F05572-CN48517NOVOAK2015 $A$5 F05572-CN48517NOVOAK2015 (should be F05573-CN48517APROAK2015) 

我已经看到ResizeUBound可以工作,但我不知道该语法如何工作或使用。 有人可以协助吗?

谢谢

下面是一个完整的例子,说明如何从您的信息中删除重复项。

从本质上讲,它把你的所有信息分类。 因此,当你sorting时,如果它是一个笨蛋,你会得到连续的价值。

它使用了2.0和3.5版本的.NET特性System.Collections.ArrayList ,因此必须安装在您的机器上。 通常它已经是但可能不是。 您可以通过Programs & Features打开它。

 Sub StringArrayDupeChecker() Dim var As Variant Dim holder As String Dim strMyList() As String Dim myDupeData As Variant Dim str As String str = "one,two,three,three,three,four,five,five" strMyList = Split(str, ",") holder = "" Set var = CreateObject("System.Collections.ArrayList") Set myDupeData = CreateObject("System.Collections.ArrayList") For Each i In strMyList var.Add (i) Next i var.Sort For Each j In var If Not j = holder Then 'do your stuff str = "notDupe" Else myDupeData.Add(j) End If holder = j Next j End Sub