需要帮助尝试学习宏编码的人。
表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代表Apple,然后是David代表Banana,依此类推,然后再返回David,依此类推,直到Grape代表Nicole。
请帮助提供函数或宏vba代码以完成此操作。
答案 0 :(得分:1)
一种方法是使用INDIRECT
:
=INDIRECT("Sheet2!A" & MOD(ROW()+3,4)+1)
这假设名称在A1:A4
编辑:我刚刚想到了一种使用INDEX
的方法:
=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)