2

我有 4 个可用的“插槽”。我有 4 个“对象”,需要创建对象组合,每个对象都被放置在旋转的“插槽”中。例如,如果我有这些对象:

val1
val2
val3
val4

我想使用脚本/宏/等来组合值的范围,以实现:

val1
val2
val3
val4

val2
val3
val4
val1

val3
val4
val1
val2

val4
val1
val2
val3

接下来,我有 6 个“对象”,每个对象都需要在每个插槽中放置一个位置,因此总会有不包括 2 个对象的组合,但在所有组合完成后,每个对象都会访问一个插槽一次。

我不确定要使用哪些网络搜索关键字。我有点卡住了。最好的方法是什么?我安装了 Excel 2013。

谢谢。

编辑。

根据 Joe 的输入,我现在有以下代码:

Public Sub makeMore()
  Dim looper As Integer, colloop As Integer, numcols As Integer
  numcols = Cells(1, 1).Value
  For colloop = 1 To numcols
    For looper = Selection.Row To ((Selection.Row + Selection.Count) - 1)
      ActiveSheet.Cells(looper, colloop).Value = ActiveSheet.Cells((looper + colloop - 2) Mod numcols + 1, 1).Value
    Next looper
   Next colloop
End Sub

我将 A1 中的值“6”放在工作表上,将值从 C4 到 C9“val1”“val2”“val3”“val4”“val5”“val6”,选择值,我看到的是数字“ 6" 散布在纸上。我想要制作的是多组 4 组,每个“val”在所有组中均等表示。我想,我在循环中的值设置中遗漏了一些东西。

所有进一步的想法表示赞赏。再次感谢。

4

2 回答 2

1

这样就可以了;我让它从 O15 读取行数的值。您可以将其设置在程序顶部的常量中,从某处读取它,将其放入 msgbox 中,无论您想要什么。

Public Sub makeMore()
  Dim looper As Integer, colloop As Integer, numcols As Integer
  numcols = Cells(15, 15).Value
  For colloop = 2 To numcols
    For looper = 1 To 4
      ActiveSheet.Cells(looper, colloop).Value = ActiveSheet.Cells((looper + colloop - 2) Mod numcols + 1, 1).Value
    Next looper
   Next colloop

End Sub
于 2013-02-21T04:27:25.657 回答
0

伪代码解决方案

Get reference to the data range
Copy range data to a variant array
Get reference to output range
for i = 1 to number of output sets
    write array to sheet
    rotate array data
    offset output range reference
next i

尝试编写此代码,如果遇到困难,请回复

于 2013-02-21T04:23:16.697 回答