【发布时间】:2013-07-23 14:11:13
【问题描述】:
我对 Visual Basic 很陌生,所以如果这是一个基本问题,我深表歉意。
我有两个 Excel 文档,一个包含公司名称列表及其对应的识别号(总共约 4000 个)。在一个单独的文档中,我有一个人员列表以及他们为谁工作(这些与第一个文档中的公司相同,但有时每个公司会有不止一行,因为我们与该公司的多个人一起工作)。这里大约有 7000 个条目。我想将所有公司 ID 号转移到所有公司人员的文档中。我有代码的概念,但不幸的是,我对 Excel VBA 语法的了解不够,无法编写此代码。我写了一些代码,但它不起作用,我不知道为什么。
Sub Firm_Number_Transfer()
Dim i As Integer
Dim x As Integer
Dim row As Integer
Dim oldRow As Integer
Dim found As Boolean
row = 1
oldRow = 1
For i = Workbooks("PM Firm Contacts - Step 2 - REVIEWED").Worksheets("Sheet2").Cells("B1") To Workbooks("PM Firm Contacts - Step 2 - REVIEWED").Worksheets("Sheet2").Cells("B7122") Step 1
row = row + 1
For x = Workbooks("PM Firms - Step 1 - REVEIWED").Sheets("Sheet1").Cells("B2") To Workbooks("PM Firms - Step 1 - REVEIWED").Sheets("Sheet1").Cells("B4843") Step 1
oldRow = oldRow + 1
If i = x Then
Workbooks("PM Firm Contacts - Step 2 - REVIEWED").Sheets("Sheet2").Cells(row, 1) = Workbooks("PM Firm Contacts - Step 2 - REVIEWED").Sheets("Sheet2").Cells(oldRow, 1)
found = True
End If
Next x
found = False
oldRow = 1
Next i
End Sub
我有什么明显的遗漏吗?任何帮助表示赞赏。
编辑
我还应该补充一点,表格的设置方式是公司位于右侧,公司编号位于左侧。据我了解,VLOOKUP() 仅在公司位于左侧且我要复制的公司编号位于右侧时才有效。否则我会使用VLOOKUP()。
【问题讨论】:
-
您需要添加一些错误捕获,并且可能应该尝试单步执行代码以查看问题发生在哪里。
-
它给了我一个“下标超出范围错误”,并在我运行它时突出显示第一个语句。
-
您可以尝试使用 Vlookup,假设人员工作簿中的所有公司名称都与您的公司 ID 工作簿匹配,并且公司 ID 工作簿中没有重复项。
-
您不能按照设置的方式迭代该 For 循环。给我几分钟,我会发布一个答案来帮助你开始
-
你熟悉 VLOOKUP() 函数吗?通过这种方式,您可以更轻松地查找每个人所在公司的公司 ID 号。