Excel宏或函数:如果单元格不是空的,则使用循环值(来自另一个工作表)填充单元格范围(a列)

Excel宏或函数:如果单元格不是空的,则使用循环值(来自另一个工作表)填充单元格范围(a列),excel,vba,excel-formula,Excel,Vba,Excel Formula,需要帮助的人试图学习宏编码 表1有两列A和B。表2列A有一个值范围。 如果表1列a单元格不为空,我想用表2列a上的值填充表1列B 下图 Sheet2 Col A Brian, David, Nicole, Aspen, Col A Apple Banana Orange Lemon Mango Strawberry Grape Col B应该通过循环

需要帮助的人试图学习宏编码

表1有两列A和B。表2列A有一个值范围。 如果表1列a单元格不为空,我想用表2列a上的值填充表1列B

下图

Sheet2 Col A
Brian, 
David,
Nicole,
Aspen,

Col A                  
Apple         
Banana        
Orange        
Lemon         
Mango         
Strawberry    
Grape      
Col B应该通过循环名字来填充,Brian代表苹果,David代表香蕉,依此类推,然后回到David,依此类推,直到Nicole得到葡萄


请帮助提供函数或宏vba代码以完成此操作。

一种方法是使用
间接

=INDIRECT("Sheet2!A" & MOD(ROW()+3,4)+1)
这假设名称位于
A1:A4

编辑:我刚刚想到了一种使用
索引的方法:

=INDEX(Sheet2!A$1:A$4,MOD(ROW()+3,4)+1)
MOD
将返回行号的剩余部分除以
n
(在本例中为
4
)。这将导致一个介于
0
3
n-1
)之间的数字,包括。行
1-6
的顺序是
1、2、3、0、1、2

通过将
3
n-1
)添加到行号中,我可以将
1-6
行的顺序设置为
0,1,2,3,0,1

然后将
1
添加到mod中,生成序列:
1,2,3,4,1,2
,然后我可以将其用作名称表的索引

对于您要使用的12个名称:

=INDEX(F$1:F$12,MOD(ROW()+11,12)+1)

你好你能解释一下表达式的这一部分吗,MOD(ROW()+3,4)+1?例如,如果我有12个名字和200个水果:我尝试了索引选项,它循环5个名字而不是12个。非常好@controlnetic.nomad++谢谢!这似乎对我的情况有效。:)有一点,工作表有一个标题,函数从列表中的第二项开始。如何调整以使其从列表的第一项开始?抱歉,在进一步检查后,我忘记了如果A列上没有更多的结果,它应该停止分配名称。可以使用
if(A1“”,formula,”