gpt4 book ai didi

excel - VBA Excel 比较两个列表是否匹配,在单独的工作表上输出结果

转载 作者:行者123 更新时间:2023-12-03 02:09:43 24 4
gpt4 key购买 nike

情况如下:

我正在验证数据库中的机构数据。每个机构都有一个与其关联的代码。我想确保我们数据库中的代码是正确的,并检查我们数据库中的名称是否不包含错误。我会手动执行此操作,但需要检查大约 1200 条记录。

我的所有数据都包含在一个工作簿中。

  • 第一张表是我们数据库中的信息。机构名称位于 B 列,代码位于 K 列。代码存储为数字。
  • 第二张表是最新信息。机构名称位于 A 列,代码位于 D 列。代码也以数字形式存储。
  • 第三张表用于显示结果

我想将第一张纸中的代码与第二张纸中的代码进行匹配,然后在第三张纸上输出结果。我希望每个代码都有一行包含:第 1 个工作表中的机构名称、代码以及第二个工作表中的机构名称。我想这样做,以便我可以检查代码是否有效,数据库中的代码是否对应于正确的机构,最后我可以检查机构名称的格式和其他差异。

这是我的问题:

  1. 我没有使用原始工作簿并以某种方式损坏数据,而是创建了一个副本来测试代码。我编写了一个可以在测试文件中运行的程序,但是当我将其复制到原始文件并进行任何适当的更改时,代码不再运行。 为什么会这样?
  2. 由于复制代码似乎会产生一些问题,因此我将代码逐字重新键入到原始文件中。有效。但是,只是某种程度。代码已运行,但只会执行条件中包含的部分代码。它将执行 block 中的第一行,但然后跳过其余部分,然后不再输入条件。 既然所有内容都正确缩进,什么会导致这种情况发生?
  3. 为了尝试找出所有这些问题发生的原因,我尝试使用 F8 单步执行程序。它逐步执行,但从不进入条件。它只是遍历循环。 使用 Step Into (F8) 命令时,它不会评估 IF 语句吗?
  4. 为了测试我的循环是否正常运行,而不是遍历所有记录并必须等待,我将 FOR 循环条件从 1170 更改为 11。除了循环运行的次数之外,没有任何变化。然而,该程序不再执行。当我把号码改回来时,它就起作用了。 为什么会这样?

这是我的代码。它可能不是最佳的,但我只需要运行比较一次。即使花上2个小时,也比人工全部检查要省力。我知道这段代码可以工作,因为我让它在测试文件中工作。但为什么它在原版中不起作用?我该怎么做才能使它起作用?

Sub FindMatches()

Dim oldRow As Integer
Dim newRow As Integer
Dim i As Integer

i = 2

For oldRow = 2 To 1170
For newRow = 2 To 1170
If Worksheets("Sheet1").Cells(oldRow, 9) = Worksheets("Sheet2").Cells(newRow, 4) Then

Worksheets("Sheet3").Cells(i, 1) = Worksheets("Sheet1").Cells(oldRow, 2)
Worksheets("Sheet3").Cells(i, 2) = Worksheets("Sheet1").Cells(oldRow, 9)
Worksheets("Sheet3").Cells(i, 3) = Worksheets("Sheet2").Cells(newRow, 1)

i = i + 1

Exit For
End If
Next newRow
Next oldRow

End Sub

最佳答案

我认为您引用了错误的列。 K 列是 11 而不是 9

关于excel - VBA Excel 比较两个列表是否匹配,在单独的工作表上输出结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15666673/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com