求高人用vb或者vba在excel里编一个按顺序组合的小程序

求高人用vb或者vba在excel里编一个按顺序组合的小程序,要求是这样运算的:在A有一列数据 a b c d e f g......(数据个数可以自定)在B列有一组数据1 2 3 4 5 6 .....(数据个数可以自定).要求自动按顺序排列组合,结果为a1 a2 a3 a4 a5 a6 b1 b2 b 3...... 这样,列的个数也要可以自定,有A B C D E F做多要做到六列,因为有的时候用到三列数据按顺序组合有的时候用到四列的数据按数据组合,最多的时候用到六列的数据按数据组合,最后合成的数据个数应该=A列的数据个数*B列数据个数*C列数据个数....,不知道程序能不能解决,希望各位大人帮忙哦,必有重谢!
这位兄弟,access没用过啊,能详细一点吗,谢谢啦

楼上的?你是哪位?楼主要有问题,请联系我

我是farfamed,要确认的问题是:
1、A列数据形式就是单个字母?B列数据形式就是单个数字?C列呢?D列呢?如果不是,请说一下数据形式,还有它们组合后,每个组合的各个数据之间有没有间隔符?比如a1,是不是紧密连接的?
2、有N列数据,每个组合就是包含N个数据吗?
3、组合后的数据放在哪里?

用VBA写了一个,你先看看:

Rem 工具-宏-VB编辑器,粘贴如下代码,返回工作表,切换到其他Sheet,再返回到当前Sheet,即开始执行,组合后的数据从第7列开始存储,每列最多存储6万个,数据量大的话,执行过程中,工作表的状态栏是一直跳动着的

Private Sub Worksheet_Activate()
Dim n As Long
a = Range("a1").End(xlDown).Row: If a > 60000 Then a = 1
b = Range("b1").End(xlDown).Row: If b > 60000 Then b = 1
c = Range("c1").End(xlDown).Row: If c > 60000 Then c = 1
d = Range("d1").End(xlDown).Row: If d > 60000 Then d = 1
e = Range("e1").End(xlDown).Row: If e > 60000 Then e = 1
f = Range("f1").End(xlDown).Row: If f > 60000 Then f = 1

n = 0: m = 0

For i = 1 To a
For j = 1 To b
For k = 1 To c
For x = 1 To d
For y = 1 To e
For z = 1 To f
DoEvents
n = n + 1
Cells(n, 7 + m) = Cells(i, 1) & Cells(j, 2) & Cells(k, 3) & Cells(x, 4) & Cells(y, 5) & Cells(z, 6)
If n > 60000 Then n = 0: m = m + 1
Next z
Next y
Next x
Next k
Next j
Next i

MsgBox n

End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-14
重谢内容是啥?这好象不是太难...
第2个回答  2009-07-15
发个实际的表到[email protected]
第3个回答  2009-07-15
Excel的一个Sheet最多只能存放65535行数据,如果你做六列结果可能会超出存储范围。为啥不用ACCESS来做,存储百万条记录也不在话下。
你只要定义两个表,每个表的字段都一样,定义6个字段就行。
tableA & tableB
field1,field2,field3,field4,field5,field6
字段的数据类型自己定义就行,然后写个查询语句
select a.* from tableA a,tableB b
这样查询不加任何条件,就是迪加尔乘积,也就刚好对应你需要的排列组合。
第4个回答  2009-07-17
好笑,回答你问题的Farfamed大侠直接用EXCEL的VBA帮你完美的解决了问题,你居然以为他用ACCESS?

哈哈,笑死我了