2013-02-21 25 views
2

我有4個可用的「插槽」。我有4個「對象」,並且需要創建對象的組合,每個對象被放置在一個旋轉中的「槽」中。因此,舉例來說,如果我有這些對象:Excel行組合?

val1 
val2 
val3 
val4 

我想用腳本/宏/等,以使值的範圍的組合,使這個:

val1 
val2 
val3 
val4 

val2 
val3 
val4 
val1 

val3 
val4 
val1 
val2 

val4 
val1 
val2 
val3 

接下來,我有6個「對象」,並且每個對象都需要在每個插槽中放置一個位置,因此總會有一個組合,其中不包含2個對象,但是在完成所有組合後,每個對象只訪問一個插槽一次。

我不確定要使用什麼網頁搜索關鍵字。我有點卡住了。什麼是最好的方式來做到這一點?我已安裝Excel 2013。

謝謝。

編輯。

基於來自喬輸入,我現在有以下代碼:

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 

我把值「6」從A1在片材上,把值從C4至C9「VAL1」「val2的」「 val3「,」val4「,」val5「,」val6「,選擇了這些值,我看到的是數字」6「遍佈整個表格。我試圖產生的是多組4個,每個「val」在所有組中均等地表示。我想在循環中的值設置中缺少一些東西。

所有進一步的想法讚賞。再次感謝。

+0

你想連續使用4個單元格,並且按照相同的順序創建4個單元格,但是每個單元格先在一個集合中?在A1-A4的IE 1-2-3-4,然後在B1-B4你有2-3-4-1,然後在C1-4你有3-4-1-2等。這最終會是一個更大的任務嗎?如果是的話,會有什麼參數? – Joe 2013-02-21 03:55:27

+0

喬,你對連續細胞的需求是正確的,每個細胞都有機會成爲「第一」。除了單個單元中的內容外,沒有其他參數。我的實際數據有4行,大約12行等。 – Snowy 2013-02-21 04:03:10

+0

所以如果是12行,你需要12組組合? – Joe 2013-02-21 04:08:43

回答

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 

在有編碼此一展身手,並張貼回來,如果你碰到困難

+0

已經走了,錯過了循環中的某些東西...... – Snowy 2013-02-21 17:18:20

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