将值插入所有电子表格并引用单个工作表

时间:2016-07-05 16:32:13

标签: excel vba excel-vba for-loop

我有一个电子表格" ProductIDList"和许多其他电子表格。使用" ProductIDList",列A是产品名称,列B是productID。我想通过匹配" ProductIDList"中的产品名称,将productID插入其他电子表格的C列。和其他电子表格。 我编写此代码但它无法运行。 请帮忙: - (

Sub InsertProductID()
Dim ws As Worksheet
Dim i As Integer
Dim k As Integer

For Each ws In Worksheets
If ws.Name = "index" Or ws.Name = "ProductIDList" Then GoTo NEXXT
 NEXXT:

  ws.Activate

    For i = 1 To 30000
    For k = 1 To 30000

       If ws.Cells(i, 2).Value = Sheets("ProductIDList").Cells(k, 1) Then
        ws.Cells(i, 3).Value = Sheets("ProductIDList").Cells(k, 2).Value
       End If

    Next
    Next

Next
End Sub

我编辑了我的代码。它现在可以运行了!但正如你们所说,它的运行速度非常慢。

Sub InsertProductID()
Dim ws As Worksheet
Dim i As Integer
Dim k As Integer

For Each ws In Worksheets
If ws.Name <> "index" And ws.Name <> "ProductIDList" Then

ws.Activate

For i = 1 To 70
For k = 1 To 70

   If ws.Cells(i, 2).Value = Sheets("ProductIDList").Cells(k, 1) Then
    ws.Cells(i, 3).Value = Sheets("ProductIDList").Cells(k, 2).Value
   End If

Next
Next

End If
Next
End Sub

1 个答案:

答案 0 :(得分:-1)

我认为此代码运行速度非常慢。

特别是,我不理解以下两行的含义:

If ws.Name = "index" Or ws.Name = "ProductIDList" Then GoTo NEXXT
 NEXXT:

如果您的目标是跳过名为&#34; ProductIDList&#34;并且&#34;索引&#34;,您至少 - 将 NEXXT 标签放在最后Next语句之前。一般来说,无论如何我都会避免使用无条件跳转。

尝试使用一些公式函数,比如VLOOKUP怎么样?一般来说,它们要快得多,但我不了解您的应用程序的要求。