Excel行组合?

时间:2013-02-21 03:51:38

标签: excel excel-vba vba

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

val1
val2
val3
val4

我想使用script / macro / etc来组合值范围,以实现:

val1
val2
val3
val4

val2
val3
val4
val1

val3
val4
val1
val2

val4
val1
val2
val3

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

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

感谢。

EDIT。

根据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”在所有组中均等地表示。我想,我在循环中的值设置中遗漏了一些东西。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

开始编码,如果你遇到困难就回复