用特定的值填充每一行,然后重复

我希望打印每隔n(在这种情况下第5)行与一定的价值,然后下一个第n个与另一个值,那么等等。 我想能够拉值从另一个表打印。 例如,我有一个表格:

Table A: George Washington Alexander Hamilton Thomas Jefferson 

我想使用来自表A的信息来创build表B.

  TABLE B George Washington George Washington George Washington George Washington George Washington Alexander Hamilton Alexander Hamilton Alexander Hamilton Alexander Hamilton Alexander Hamilton Thomas Jefferson Thomas Jefferson Thomas Jefferson Thomas Jefferson Thomas Jefferson George Washington George Washington George Washington George Washington George Washington Alexander Hamilton Alexander Hamilton Alexander Hamilton Alexander Hamilton Alexander Hamilton Thomas Jefferson Thomas Jefferson Thomas Jefferson Thomas Jefferson Thomas Jefferson ... 

假设您的源数据位于Sheet1的A列中,则可以在Sheet2上按如下所示完成,从A1开始并拖放:

 =INDEX('Sheet1'!A:A,ROUNDUP(ROW()/5,0)) 

INDEX需要一个给定的范围(在这种情况下,Sheet1中列A的所有列都存储了您的名称),并返回该范围的给定行号中显示的值。 以ROW()(表示公式所在单元格的行)除以5,向上舍入,重复1次5次,然后2次5次等。因此,索引将重复5次,通过Sheet1中的列表。

如果你想使用VBA,那么试试这个:

公用Sub DuplicateItems(rInputRange作为范围,rOutputStartCell作为范围,lDuplicateCount只要)

 Dim rCell As Range Dim lOffset As Long Dim i As Long For Each rCell In rInputRange For i = 1 To lDuplicateCount rOutputStartCell.Offset(lOffset, 0) = rCell lOffset = lOffset + 1 Next i Next rCell 

结束小组

rInputRange表示表A,rOutputStartCell作为单元格来启动输出lDuplicateCount作为复制量

如果Table A从单元格A1开始,则将以下公式插入单元格C1 (或任何其他列,但必须位于第1行中)并适当复制:

 =OFFSET($A$1,MOD(FLOOR((ROW()-1)/5,1),COUNTA($A:$A)),0) 

其中5是你想重复名称的次数。

一个简单的方法是:手动创build整个第一个循环。 然后把公式=A1放在下一个单元格中(假定A1是第一个单元格)。 复制或填写。

或者很简单:

 Sub MacroMan() n = 5 '// number of rows to fill For Each var In WorksheetFunction.Transpose([A1:A3]) '// Change to range of Table A Range("B" & n - 4).Resize(5).Value = CStr(var) n = n + 5 Next End Sub 

这是另一种方式:

 =INDEX(TableA,INT(MOD(ROW()-FirstRow,LenTableA*Repeats)/Repeats)+1) 

FirstRow是TableB的第一行;
Repeats是每个条目重复的次数; 和
LenTableA是TableA中的条目数

希望有所帮助。