Arrays VBA数组单元格值复制问题
我为同样的问题挣扎了好几个星期。我想现在是时候在网络上成为专业人士了:Arrays VBA数组单元格值复制问题,arrays,excel,vba,Arrays,Excel,Vba,我为同样的问题挣扎了好几个星期。我想现在是时候在网络上成为专业人士了: 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 & " " &
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
这是将以下所有数据放入arraysee图片中的代码:
跑步后,我会得到以下信息:
我想我在数组中得到了以下单元格值:
名称列表A 8、k 2、u 2、e 2、o 2等
我的问题是如何清理数组,使它们的重复值不超过1个相同的值。我想要
名称列表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无重复数据
我很感激你的帮助 您应该在脚本中添加以下代码行:
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
尝试一下:
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
查看Dictionary对象。将每个值作为一个键添加到字典中,但前提是该键不存在。最后,简单地在键上循环。使用类似的方法时,不要一次读/写一个单元格。使用x=RangeA1.Resize100,10.Value语法。您可能不知道这一点,但在您的代码中,变量txt、i和j都被声明为Variant类型。是的,我知道,但谢谢。我在这里的意图是给@Tarik一个简单的答案来回答他的具体问题。不要说变体速度较慢,如何以正确的方式声明变量等等。这里不重要。