我有一张带有两张纸的Excel电子表格,Sheet 1
包含一些我希望复制的文本和公式,以便为我的项目编写2,000多行C#代码。非常重复,所以我想我可以使用Excel为我编写它。 Sheet 2
包含我的数据库的摘录,我希望用它来填充这些值。我的Excel代码部分看起来像这样,分布在10行和5列上:
new AccountingPeriod()
{
MonthCovered="=Sheet2!B2",
StartDate=DateTime.Parse("Sheet2!C2"),
EndDate=DateTime.Parse("Sheet2!D2"),
AccountingPeriodDescription="Sheet2!E2",
Active='=Sheet2!F2',
April='=Sheet2!G2,
TaxYear="Sheet2!H2"
},
当我突出显示这10行并使用Excel重复工具时,我希望单元格引用(例如,在我的电子表格Sheet1!D3 = Sheet2!B2
中,我希望Sheet1!D13 = Sheet2!B3 NOT Sheet2!B13
)增加1,而不是10,因为它是在我的电子表格中完成。
我们尝试了另一种编写宏的方法,在Sheet2
中为每个填充的行插入10个空白行,以便重复的引用在Sheet1
中正确但我们目前在获取时失败了这是正常工作。
答案 0 :(得分:1)
使用带有少量数学的INDEX function来实现10比1的行交错,而不是使用副本在1对1上更改的直接引用。
在Sheet1!D3中,这引用了Sheet2!B2。
=INDEX(Sheet2!B:B,INT(ROW(1:1)/10)+2)
在Sheet1!D13中,这引用了Sheet2!B3。
OFFSET function可以完成同样的事情,但它是一个易失性函数,只要工作簿中的任何内容发生变化,就会重新计算。 INDEX提供相同的功能,同时保持非易失性,只有在影响其返回值的内容发生变化时才会重新计算。