|
一、圖1 二、圖2 三、函數(shù)解決 1、公式截圖 2、公式 =VLOOKUP(--TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),1,99)),參數(shù)表!A:B,2,0)&','&VLOOKUP(--TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),100,99)),參數(shù)表!A:B,2,0)&','&VLOOKUP(--TRIM(MID(SUBSTITUTE(A2,'.',REPT(' ',99)),199,99)),參數(shù)表!A:B,2,0) 3、公式解釋
四、vba自定義函數(shù)實現(xiàn) 1、公式截圖 =提(A9,參數(shù)表!$A$1:$B$20) 3、動畫演示 4、代碼 Option Explicit Function 提(rg As Range, SumRg As Range) Dim arr1, arr2, arr3(), x, k, y, Reg, M, Mat Application.Volatile '讓函數(shù)刷新 Set Reg = CreateObject('Vbscript.RegExp') '引用外部對象正則表達式 With Reg .Global = True .Pattern = '\d ' '匹配任意長的數(shù)字 End With Set Mat = Reg.Execute(rg) '把所有的符合規(guī)則的裝進mat arr1 = SumRg '把第2參數(shù)裝入數(shù)組,目的為了提速度 For Each M In Mat循環(huán)符合規(guī)則的數(shù)字 For y = 1 To UBound(arr1) '循環(huán)數(shù)組arr1 If arr1(y, 1) = Val(M) Then '判斷是否和M相等于,由于M還是文本型的數(shù)字,通過val處理轉(zhuǎn)為數(shù)值型數(shù)字 k = k 1 '計數(shù) ReDim Preserve arr3(1 To k) '重新定義arr2的空間,且保留原有值 arr3(k) = arr1(y, 2) '把數(shù)組arr1的第2參裝進arr3 End If Next y Next M 提 = Join(arr3, ',') '把結(jié)果賦值給函數(shù)名 End Function |
|
|