|
本帖最后由 studystudy 于 2014-2-28 13:24 编辑
附件下载新的附件和例子在30楼层)
````````````````````````````````````
问题是这样的...
1对应
01 02
01 03
01 04
01 05
01 06
2对应
01 06
01 07
01 08
01 09
01 10
3对应
01 10
01 11
02 03
02 04
02 05
4对应
02 05
02 06
02 07
02 08
02 09
若 A1=1,那么B列就出现1对应的
01 02
01 03
01 04
01 05
01 06
若A1=12,那么B列就出现1,2对应的数据
01 02
01 03
01 04
01 05
01 06
(01 06)------这组数据1和2都有,去重复保留一组即可
01 07
01 08
01 09
01 10
若A1=134,那么B列就出现1,3,4对应的数据
01 02
01 03
01 04
01 05
01 06
01 10
01 11
02 03
02 04
02 05
(02 05)-----------这组数据3和4都有,去重复保留一组即可
02 06
02 07
02 08
02 09
各位老师 如何写代码...才能实现这样的功能?
```````````````````````````````
补充说明--
前面举的例子....
1对应
01 02
01 03
01 04
01 05
01 06
对应的意思是....当我在A1输入1时,,B列就出现以下 数据--------
01 02
01 03
01 04
01 05
01 06
2对应
01 06
01 07
01 08
01 09
01 10
对应的意思是....当我在A1输入2时,,B列就出现以下 数据--------
01 06
01 07
01 08
01 09
01 10
`````````````````````````````
可以说是 互相转换 的意思...
当我在A1输入12时.....
程序就把1对应的数据和2对应的数据都输出到B列.并对B列的数据进行去重复排序....
不知道这样说 ,能看明白了吗?
`
- Sub Macro1()
- Dim arr, d, d2, i&, j&, x, y, w
- Set d = CreateObject("scripting.dictionary")
- Set d2 = CreateObject("scripting.dictionary")
- [b:b].ClearContents
- arr = Range("g1").CurrentRegion
- For j = 1 To UBound(arr, 2)
- For i = 2 To UBound(arr)
- x = Replace(arr(1, j), "对应", "")
- If arr(i, j) <> "" Then d(x) = d(x) & "," & arr(i, j)
- Next
- Next
- w = Split([a1])
- For i = 0 To UBound(w)
- y = Split(d(w(i)), ",")
- For j = 1 To UBound(y)
- d2(y(j)) = ""
- Next
- Next
- Range("b1").Resize(d2.Count) = Application.Transpose(d2.keys)
- End Sub
复制代码
|
|