2017-08-16 43 views
1

我遇到以下問題。我正在將未排序的文本從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。 我真的很感激任何幫助,暗示不同的appraoches之類的。乾杯。

+0

所以你想找到一個'整數/整數'...嘗試在這些線上搜索。可能會推動你在正確的方向 – user1

+0

感謝您的提示。我唯一的想法是找到所有的「/」條目,然後循環並檢查前後的值是否是數字,或者是否有我看不到的更智能的方法? (不知道這會工作,但我會嘗試) – KiW

+0

我不是一個vba專家,但我認爲你必須創建一個正則表達式對象'Set regex = CreateObject(「VBScript.RegExp」)'然後定義'regex.pattern = 「\ d +/\ d +」'然後執行'matches = regex.execute(表格(「Tabelle1」)。範圍(「A1:K100」)'或類似的東西。 – Toto

回答

2

在這裏你去,看看:

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 
------------------------------ 
+0

我會在一秒鐘內嘗試,如果某些條目不包含「/」,會產生什麼效果?不管怎麼說,非常感謝:) – KiW

+0

@KiW - 有一個布爾函數'blnCheck2Integers',這就是它工作的原因。 – Vityata

+1

它真棒!真的很感謝,我在那裏掛了一會兒。 – KiW