VBA按顺序列出两列中的数字组合

时间:2018-01-02 11:40:57

标签: excel vba

我想列出A列和B列中数字1到26的可能组合,格式如下:

    1 1
    1 2 
    1 3
    1 4
    ...
    1 25
    1 26
    2 1
    2 2
    2 3
    ...
etc

对于A栏,我可以:

Range("A1:A26") = 1
Range("A27:A52") = 2
etc

但是这似乎很长,并且必须有更好的方法来做到这一点。

我找到了this代码作为另一个问题的答案

Range("A1")=-500
Range("A1").Select
Selection.DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
        Step:=1, Stop:=500, Trend:=False 

作为一种顺序列出数字的方法,但是我需要将其修改为26,然后从1开始,一直到列A列表的末尾。我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:1)

尝试这些公式,然后根据需要向下拖动(第676行):

A1 =ROUNDUP(ROW()/26,0)

B1 =IF(MOD(ROW(),26)=0,26,MOD(ROW(),26))

答案 1 :(得分:0)

VBA解决方案,作为上一回复中给出的Excel公式的替代方案。 (未测试)

MyRow = 1 ' or wherever you want to start
MyCol = 1 ' or wherever you want to start
For A = 1 to 26
  For B = 1 to 26
    Cells(MyRow,MyCol).Value = A
    Cells(MyRow,MyCol+1).Value = B
    MyRow = MyRow + 1
  Next B
Next A

这种方法取代上述公式的优点在于它不依赖于您放置数据的位置。如果你想要(例如)5到24的组合,或者甚至A是1到26而B是1到10,它也可以被调整。

但是,上一个答案中描述的公式也是一种很酷的方式。

如果你改变了:

For A = 1 to 26
  For B = 1 to 26

For A = 1 to 26
  For B = A to 26

那么这对于非定向组合是有用的(例如,如果[1,2]与[2,1]相同)。