使用Excel / VBA生成标题和一组给定的句子

时间:2013-07-23 04:59:15

标签: excel excel-vba vba

请注意,我之前从未使用过Excel这样的高级方式(事实上,我之前从未使用过任何函数......但我目前正在搜索Excel在线和VBA的教程,而我我在这里问,万一有人知道哪些更好用,以及如何有效地使用它们。

我在 A列(也是句子)中提供Excel 5个标题,在列B < 10个句子 < / strong>随机生成 3段,每个段落使用 1个标题和3个句子

我如何实现这一目标?我知道Excel有一个RAND()函数,但这似乎只适用于数字......

更多内容,如果我确实找到解决方案,我会更新。

2 个答案:

答案 0 :(得分:1)

如果您的数据位于第一张工作表的A1:A5B1:B10,则使用RANDBETWEEN

  Sub GetText()
Dim A
Dim B
A = Sheets(1).Range(Sheets(1).[a1], Sheets(1).[a5])
B = Sheets(1).Range(Sheets(1).[b1], Sheets(1).[b10])
MsgBox A(Application.RandBetween(1, UBound(A)), 1) & " " & B(Application.RandBetween(1, UBound(B)), 1)
End Sub

答案 1 :(得分:0)

在单元格C1中放置:

=RANDBETWEEN(1;5)

in cell D1 put:
=RANDBETWEEN(1;10)

在单元格E1中:

=IF(D1=1;RANDBETWEEN(2;10);IF(D1=10;RANDBETWEEN(1;9);CHOOSE(RANDBETWEEN(1;2);RANDBETWEEN(1;D1-1);RANDBETWEEN(D1+1;10))))

在单元格F1中放置:

=IF(MAX(D1:E1)-MIN(D1:E1)=1;IF(MIN(D1:E1)=1;RANDBETWEEN(3;10);IF(MIN(D1:E1)=9;RANDBETWEEN(1;8);CHOOSE(RANDBETWEEN(1;2);RANDBETWEEN(1;MIN(D1:E1)-1);RANDBETWEEN(MAX(D1:E1)+1;10))));IF(MAX(D1:E1)-MIN(D1:E1)=9;RANDBETWEEN(2;9);IF(MIN(D1:E1)=1;CHOOSE(RANDBETWEEN(1;2);RANDBETWEEN(2;MAX(D1:E1)-1);RANDBETWEEN(MAX(D1:E1)+1;10));IF(MAX(D1:E1)=10;CHOOSE(RANDBETWEEN(1;2);RANDBETWEEN(1;MIN(D1:E1)-1);RANDBETWEEN(MIN(D1:E1)+1;9));CHOOSE(RANDBETWEEN(1;3);RANDBETWEEN(1;MIN(D1:E1)-1);RANDBETWEEN(MIN(D1:E1)+1;MAX(D1:E1)-1);RANDBETWEEN(MAX(D1:E1)+1;10))))))

在细胞G1中:

=CONCATENATE(INDIRECT("A" & C1);" "; INDIRECT("B" & D1); " ";INDIRECT("B" & E1);" ";INDIRECT("B" & F1))

复制单元格C1:G1并隐藏列C:F