gpt4 book ai didi

vba - VBA中从字符串中提取数字

转载 作者:行者123 更新时间:2023-12-02 14:38:25 27 4
gpt4 key购买 nike

我在 vba 中有包含这样的字符串的单元格:

供应数量 <= 天数供应|23 天内 30 次

我通过两个函数发送这些字符串,这些函数只是挑选出两个数字并将它们解析到适当的单元格中,然后废弃其余的部分。挑选天数 (23) 的函数工作正常,但挑选 30 的函数则不然。我一直在测试它,当我想要的只是 30 时,它似乎正在解析 30 以及它之前的整个字符串。在上面的字符串的情况下,它返回“QUANTITY SUPPLY <= DAYS SUPPLY|30” “当我希望它返回的是 30 时。我查看了该函数,但找不到问题。任何有关此问题的帮助将不胜感激!

Public Function extractQLlMax(cellRow, cellColumn) As String
qlm = Cells(cellRow, cellColumn).Value
extractQLlMax = qlm
If extractQLinfoBool = "Yes" And Not InStr(1, qlm, "IN") = 0 Then
If InStr(1, qlm, "QUANTITY SUPPLY") > 0 Then
pipeIndex = InStr(1, qlm, "|")
inIndex = InStr(1, qlm, "IN")
extractQLlMax = Mid(qlm, pipeIndex, inIndex - pipeIndex)
End If
inIndex = InStr(1, qlm, "IN")
extractQLlMax = Mid(qlm, 1, inIndex - 2)
ElseIf extractQLinfoBool = "Yes" And Not InStr(1, qlm, "FILL") = 0 Then
perIndex = InStr(1, qlm, "PER")
extractQLlMax = Mid(qlm, 1, perIndex - 2)
End If
End Function

最佳答案

这是迄今为止提取数字的最短(5 行)函数!

Function GetNumbers(str As String, Occur As Long) As Long
Dim regex As Object: Set regex = CreateObject("vbscript.RegExp")
regex.Pattern = "(\d+)"
Regex.Global = True
Set matches = regex.Execute(str)
GetNumbers = matches(Occur)
End Function

参数:

  1. Str 是从中提取数字的字符串
  2. Occur 是该数字的出现次数(它是从 0 开始的,因此第一个数字将出现 0 而不是 1,依此类推)

关于vba - VBA中从字符串中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771802/

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