Dim txt, show As String
Dim NameList(1 to 50) as Varriant
Dim i, j, t As Integer
t = 1
For i = 1 To 10
For j = 1 To 5
NameList(t) = Sheets("Sheet2").Cells(i, j).Value
nshow = nshow & i & " " & t & " " & NameList(t) & vbCrLf
t = t + 1
Next j
Next i
MsgBox nshow
这是将所有以下数据放入数组的代码(见图片):
我跑完后得到以下内容:
我认为我在数组中得到以下单元格值: NameList(a 8,k 2,u 2,e 2,o 2等等)
我的问题是如何清理我的数组,使它们不重复(超过1个相同的值)。我想拥有 NameList(a 8,k 2,u 2,e 2,x 11,c 1,m 1,d 2,r 1,o 2,y 1,i 1,f 1,p 1,z 1,g 2, q 2,h 1,b 2,l 1,v 1,j 1,t 2,n 1)没有重复数据。
我想感谢,帮助!
答案 0 :(得分:0)
您应该在脚本中添加以下代码行:
If InStr(nshow, Sheets("Sheet2").Cells(i, j).Value) = 0 Then
End If
这里的InStr函数基本上检查当前的迭代值是否已经在nshow数组中。
如果是 - 它什么都不做,如果没有(函数返回0) - 它允许运行内部代码块,结果是新值被添加到nshow数组中。
最后,您的代码应如下所示:
Dim txt, show As String
Dim NameList(1 To 50) As Variant
Dim i, j, t As Integer
t = 1
For i = 1 To 10
For j = 1 To 5
If InStr(nshow, Sheets("Sheet2").Cells(i, j).Value) = 0 Then
NameList(t) = Sheets("Sheet2").Cells(i, j).Value
nshow = nshow & i & " " & t & " " & NameList(t) & vbCrLf
t = t + 1
End If
Next j
Next i
MsgBox nshow
答案 1 :(得分:0)
尝试一下:
Sub zxcvb()
On Error Resume Next
Dim NameList(1 To 50) As Variant, v As Variant
Dim i As Integer, j As Integer, t As Integer
Dim nshow As String, c As Collection
Set c = New Collection
t = 1
For i = 1 To 10
For j = 1 To 5
v = Sheets("Sheet2").Cells(i, j).Value
c.Add v, CStr(v)
If Err.Number = 0 Then
NameList(t) = Sheets("Sheet2").Cells(i, j).Value
nshow = nshow & i & " " & t & " " & NameList(t) & vbCrLf
t = t + 1
Else
Err.Number = 0
End If
Next j
Next i
MsgBox nshow
End Sub