从2D阵列删除重复和在VBA
更新它我有一个二维数组保持值如下所示:从2D阵列删除重复和在VBA
阵列 - JK(K,NC)
“K” 商店总计没有项目 的“ NC“商店项目
我需要从”NC“ 删除重复项,并删除重复项后更新”K“(即总项目)。
- 5,6,7,
- 7,6,9,10,11,
- 8,7,15,
- 12,15,16,12 ,17,18,19,20,16
- 26,27,
- 20,19,
- 21,33,,34,35,
- 19,33,34,18,38,39,40,
- 39,40,38,43,
- 41,44,,45,46,
- 20,19,
- 21,33,,34 ,35,21
- 19,33,34,18,38,39,40,34
你可以使用一个函数,像这样
Function RemoveDupes(strInput As String) As Variant()
' Uses Microsoft Scripting Runtime referece
Dim arrSplit() As String
Dim lngCounter As Long
Dim dicDupeCheck As New Scripting.dictionary
arrSplit = Split(strInput, Chr(32))
For lngCounter = 0 To UBound(arrSplit) - 1
If Not dicDupeCheck.Exists(arrSplit(lngCounter)) Then
dicDupeCheck.Add arrSplit(lngCounter), arrSplit(lngCounter)
End If
Next lngCounter
RemoveDupes = Array(dicDupeCheck.Count, Join(dicDupeCheck.Items(), " "))
Erase arrSplit
End Function
这将被用来作为如下
RemoveDupes("12 15 16 12 17 18 19 20 16")(0)
会给计数,并RemoveDupes("12 15 16 12 17 18 19 20 16")(1)
会给非重复数据删除技术的输出。
或设置数组removedupes和使用,所以arr=RemoveDupes("12 15 16 12 17 18 19 20 16")
然后OriginalArray(x)=arr(0) & " - " & arr(1)
这是基于来自@tigeravatar和@Jeeped与你的项目和代码可能有一个解决方案发现这里对堆栈溢出,所以非常感谢对这个家伙。
Removing Duplicate values from a string in Visual Basic
和
Multidimensional Arrays with For Loops VBA
Sub Test()
Dim strArray(8, 1) As String
Dim newString As String
strArray(0, 0) = "4"
strArray(0, 1) = "5 6 7 5"
strArray(1, 0) = "6"
strArray(1, 1) = "7 6 9 10 11 7"
strArray(2, 0) = "4"
strArray(2, 1) = "8 7 15 8"
strArray(3, 0) = "9"
strArray(3, 1) = "12 15 16 12 17 18 19 20 16"
strArray(4, 0) = "4"
strArray(4, 1) = "5 6 7 5"
strArray(5, 0) = "6"
strArray(5, 1) = "7 6 9 10 11 7"
strArray(6, 0) = "9"
strArray(6, 1) = "12 15 16 12 17 18 19 20 16"
For i = 0 To UBound(strArray, 1)
newString = DeDupeString(strArray(i, 1), " ")
strArray(i, 0) = UBound(Split(newString, " ")) + 1
strArray(i, 1) = newString
Next i
End Sub
Function DeDupeString(ByVal sInput As String, Optional ByVal sDelimiter As String = ",") As String
Dim varSection As Variant
Dim sTemp As String
varSection = Split(sInput, sDelimiter)
For Each varSection In Split(sInput, sDelimiter)
If InStr(1, sDelimiter & sTemp & sDelimiter, sDelimiter & varSection & sDelimiter, vbTextCompare) = 0 Then
sTemp = sTemp & sDelimiter & varSection
End If
Next varSection
DeDupeString = Mid(sTemp, Len(sDelimiter) + 1)
End Function
什么是你的代码已经尝试过?重要性字符串中的值的顺序是什么? – Luuklag
可能重复[VBA,从数组中删除重复](https://*.com/questions/11870095/vba-remove-duplicates-from-array) – Moosli
@Moosli这个问题是不同的,因为它不想删除重复的数组条目,它想要从数组中删除重复的字符串。 – Luuklag