【问题标题】:Find Variable Value + Symbol Combination查找变量值 + 符号组合
【发布时间】:2018-02-16 23:51:34
【问题描述】:

我有以下问题。我正在将未排序的文本从 pdf 读取到 excel 中,用相当随机的条目填充我的工作表。

不,我正在寻找对大多数部分都非常有效的元素,我只是在寻找变量值&符号&变量值组合时遇到了重大问题。 像例如的组合0/700 出现在不同的部分,并且没有显示找到它们的顺序。

示例表:

100 mt/h 
m³/t
S/C
0/700
0/25
5/31
43/47
700/1000

我需要找到“数字”/“数字”组合的所有内容,例如0/700。问题是唯一的常量是“/”(斜线),它也出现在其他单元格中。所以我想知道是否有机会搜索数字/数字。

我尝试了以下方法:

Set prdct = Sheets("Tabelle1").Range("A1:K100").Find("/")

给我所有出现斜线的条目,不幸的是没有帮助。 所以我更进一步尝试:

Set prdct = Sheets("Tabelle1").Range("A1:K100").Find("\d*/\d*")
Set prdct = Sheets("Tabelle1").Range("A1:K100").Find("\d*"&"/"&"\d*")
Set prdct = Sheets("Tabelle1").Range("A1:K100").Find("\d+/\d+")
Set prdct = Sheets("Tabelle1").Range("A1:K100").Find("\d+"&"/"&"\d+")

所有最后一个都返回Nothing,所以显然有些事情没有解决。 如果有帮助,斜线左侧的最大值可以是最大值999,斜线右侧的最大值可以是9999。但它也可以是0/1。 我真的很感激任何帮助,提示不同的方法等。干杯。

【问题讨论】:

  • 所以你想找到一个integer/integer ...尝试谷歌搜索这些行。可能会把你推向正确的方向
  • 感谢您的提示。我从中得到的唯一想法是找到所有“/”条目,然后循环并检查前后的值是否为数字,或者是否有更聪明的方法我没有看到? (不确定这是否可行,但我会尝试)
  • 我不是 vba 专家,但我认为你必须创建一个正则表达式对象 Set regex = CreateObject("VBScript.RegExp") 然后定义 regex.pattern ="\d+/\d+" 然后执行 matches = regex.execute(Sheets("Tabelle1").Range("A1:K100") 或类似的东西。

标签: vba excel find symbols


【解决方案1】:

给你看看:

Option Explicit

Public Sub TestMe()

    Dim arrInput    As Variant
    Dim varVar      As Variant
    Dim lngCounter  As Long

    arrInput = [{"100 mt/h","m3/t","S/C","0/700","0/25","5/31","43/47","700/1000"}]

    For Each varVar In arrInput
        Debug.Print varVar
        Debug.Print blnCheck2Integers(varVar)
        Debug.Print "------------------------------"
    Next varVar

End Sub

Public Function blnCheck2Integers(ByVal strInput As String, _
                                            Optional strDelim = "/") As Boolean

    Dim arrTemp As Variant

    arrTemp = Split(strInput, strDelim)
    If UBound(arrTemp) <> 1 Then Exit Function
    blnCheck2Integers = IsNumeric(arrTemp(0)) And IsNumeric(arrTemp(1))

End Function

你用“/”分割,然后检查这两个值是否是数字。如果值不是 2,则返回 false。这是控制台中的结果:

100 mt/h
False
------------------------------
m3/t
False
------------------------------
S/C
False
------------------------------
0/700
True
------------------------------
0/25
True
------------------------------
5/31
True
------------------------------
43/47
True
------------------------------
700/1000
True
------------------------------

【讨论】:

  • 我一会儿试试,如果有些条目不包含“/”会不会有影响?无论如何已经非常感谢了:)
  • @KiW - 有一个布尔函数blnCheck2Integers,这就是它起作用的原因。
  • 太棒了!真的很感激,我在那里挂了一段时间。
  • @KiW - 竖起大拇指! :)
猜你喜欢
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2018-01-31
  • 2021-11-25
  • 2023-04-02
  • 1970-01-01
  • 2023-02-25
相关资源
最近更新 更多