【发布时间】:2022-01-03 08:38:37
【问题描述】:
背景信息:
我列出了 5000 多条这种格式的错误消息:
“999999 16 901 F SMITH, Smith FT 1 1.0 额外休假时间 -4.0000 超出应享权利,按比例 -4.0000”
我已经能够使用宏对它们进行分类,例如“额外休假时间超过权利加按比例”。
我试图从那里提取这两个数字。
我可以使用这些公式手动完成:
=MID(J3,SEARCH("hours ",J3)+5,SEARCH("exceed",J3)-SEARCH("hours ",J3)-6)
=TRIM(RIGHT(SUBSTITUTE(J3," ",REPT(" ",LEN(J3))),LEN((J3))))
但这就是我被卡住的地方,将这个逻辑合并到宏中并让它遍历整个列表。
这是我的第一次尝试:
If InStr(myString, "Additional Leave hours ") > 0 And InStr(myString, "exceed entitlement plus pro-rata") Then
'set category
Cells(x, 6).Value = "Additional Leave hours exceed entitlement plus pro-rata"
'first number
Cells(x, 8).ForumlaR1C1 = "=MID(RC[2],SEARCH(""hours "",RC[2])+5,SEARCH(""exceed"",RC[2])-SEARCH(""hours "",RC[2])-6"
'second number
Cells(x, 9).FormulaR1C1 = "=TRIM(RIGHT(SUBSTITUTE(RC[2],"" "",REPT("" "",LEN(RC[2]))),LEN((RC[2]))))"
'first minus second
Cells(x, 7).FormulaR1C1 = "=SUM(RC[2]-RC[1]"
End If
从那里我已经能够使用 .Select 和 .Active 单元格,它可以工作但效率不高:
'first number
Cells(x, 8).Select
ActiveCell.FormulaR1C1 = "=MID(RC[2],SEARCH(""hours"",RC[2])+5,SEARCH(""exceed"",RC[2])SEARCH(""hours "",RC[2])-6)"
任何帮助将不胜感激,在此先感谢。
【问题讨论】:
-
你在宏里试过什么?
-
我尝试过使用 .FormulaR1C1,但这给了我在引号处的预期语句结束错误。让我抓一张我第一次尝试的截图
-
刚刚将我最初的尝试添加到主帖中,我猜我需要学习使用不同的功能,但我只是不知道我在寻找什么
-
您是否必须在电子表格中包含公式,或者您可以添加所需的输出 - 即 VBA 正在寻找答案,您只需将该值放入单元格中?
-
很高兴阅读仅返回值的选项,这些公式是我知道如何提取它们的唯一方法。谢谢 - 格伦
标签: excel vba text numbers extract