本帖最后由 france723 于 2017-4-7 16:56 编辑
如图所示, A列的序号对应C列的条件.比如按模糊查找 "[F1,F3]" ,就能找到对应的 I1,I2,I3,I4,I9,I10
*代表任意 F几, G1代表F1,F2,F3中的任意一个查询时只以F查询, ALL代表全部 (I目前有10个, 当它变化数量,程序一样使用)
找到后显示到第四个工作表“Feuil4”里,与之对应。
(我自己写的是每个每个转换对应的都是所有的I,希望大神修改)
跪求大神帮忙
- Private Sub CommandButton1_Click()
- Dim s, s1$, arr, brr, d As Object, i&, j&, c
- Set d = CreateObject("scripting.dictionary")
- s = Split([e8], ",")
- arr = [a1].CurrentRegion
- For i = 1 To UBound(arr)
- If arr(i, 3) = "ALL" Then
- d(arr(i, 3)) = d(arr(i, 3)) & "," & arr(i, 1)
- Else
- brr = Split(arr(i, 3), "]")
- For j = 0 To UBound(brr)
- If j = 0 Then brr(j) = Mid(brr(j), 2) Else brr(j) = Mid(brr(j), 3)
- d(brr(j)) = d(brr(j)) & "," & arr(i, 1)
- Next j
- End If
- Next i
- d.Remove ""
- For Each c In d.keys
- If c = "ALL" Then
- s1 = s1 & "," & Mid(d(c), 2)
- Else
- brr = Split(c, ",")
- If brr(0) = "*" Then
- brr(0) = s(0)
- Else
- If brr(0) = "G1" Then If s(0) = "F1" Or s(0) = "F2" Or s(0) = "F3" Then brr(0) = s(0)
- End If
- If brr(1) = "*" Then
- brr(1) = s(1)
- Else
- If brr(1) = "G1" Then If s(1) = "F1" Or s(1) = "F2" Or s(1) = "F3" Then brr(1) = s(1)
- End If
- If Join(brr) = Join(s) Then s1 = s1 & "," & Mid(d(c), 2)
- End If
- Next c
- [f8] = Mid(s1, 2)
- End Sub
复制代码
|