gpt4 book ai didi

excel - VBA 匹配函数不适用于大数

转载 作者:行者123 更新时间:2023-12-04 21:15:54 25 4
gpt4 key购买 nike

我创建了一个自定义类型,我称之为 Run,它的一个值称为 RunMOA。它存储一个字符串,它始终是一个 12 位数字。我有一系列这些运行,每个运行都有不同的 MOA。我还有一张表,其中有一列包含所有可能的 MOA,我正在尝试遍历 Runs 数组并获取该 Run 的相应 MOA 的行号(用于在该表中查找其他数据)。

奇怪的是,这适用于一堆 MOA,但不适用于特定的 MOA。我做了一些玩弄,它几乎似乎是由四舍五入或其他原因引起的错误。例如,这些 MOA 可在以下列中找到:

200630031111, 200630021593, 200630021593,

但这些不是:

200000000443、200000000603、200000000444。

这是遍历值的代码(NumRuns 是 Runs 数组的长度):

Dim i As Integer
For i = 0 To NumRuns - 1

GetRun i, n, Schedule, SKUs

Next i

这是应该将行号存储在变量中的行:
Row = Application.WorksheetFunction.Match(Val(Runs(i).RunMOA), Worksheets("Sheet1").Range(Cells(2, 1), Cells(n, 1))) - 1

当数字太大时,此功能是否有问题?只有当连续有很多零时,它才会给我带来麻烦,我找不到解释。我检查并仔细检查了这些 MOA 是否在列中,因此它们丢失不是问题。

最佳答案

您当前正在使用 MATCH function 的近似匹配并且数据必须按升序排序才能使用默认的 match_type 值 1。使用 match_type 为 0 的完全匹配。

Row = Application.WorksheetFunction.Match(Val(Runs(i).RunMOA), Worksheets("Sheet1").Range(Cells(2, 1), Cells(n, 1)), 0) - 1

顺便说一句,这会更好,因为,
dim rw as variant
rw = Application.Match(Val(Runs(i).RunMOA), Worksheets("Sheet1").Range(Cells(2, 1), Cells(n, 1)), 0)
if not IsError(rw) then
rw = rw - 1
'more operational code here
else
' match failed - deal with error
end if

关于excel - VBA 匹配函数不适用于大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576240/

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