插入行和填充/复制值
所以…我已经search了如何做到这一点,而我可以得到它的一部分工作,我似乎无法弄清楚如何让所有的作品工作
我的初始数据如下所示,并告诉我标题列中每个值需要多less行(例如,Value1将有3行,Value2将有一行等)
Title Audit Period Target Count Value1 2013-Q1 3 Value2 2013-Q1 1 Value3 2013-Q2 3 Value4 2013-Q3 4 Value5 2013-Q4 2
我想通过VBA,有一种方法来点击一个button,它的格式/填充上面的信息如下:
Title Audit Period Value1 2013-Q1 Value1 2013-Q1 Value1 2013-Q1 Value2 2013-Q1 Value3 2013-Q2 Value3 2013-Q2 Value3 2013-Q2 Value4 2013-Q3 Value4 2013-Q3 Value4 2013-Q3 Value4 2013-Q3 Value5 2013-Q4 Value5 2013-Q4
我不关心转换的数据放在哪里…代码可以覆盖开始数据或将结果放置在单独的选项卡中…或其他任何东西。
感谢您提供任何帮助。
这里是VBA代码来做到这一点 – 你只需要修改表名和开始范围:
Sub MultiplyRows() Dim rngSource As Range, rngTarget As Range Set rngSource = Sheets("Sheet1").Range("A2") Set rngTarget = Sheets("Sheet2").Range("A2") While rngSource <> "" rngSource.Resize(, 2).Copy rngTarget.Resize(rngSource.Offset(, 2), 2) Set rngTarget = rngTarget.Offset(rngSource.Offset(, 2)) Set rngSource = rngSource.Offset(1) Wend End Sub
或者,您可以只使用公式来做到这一点:
这个想法是,你使用一些帮助列来统计和检索数据。 详细地说,我有3个帮助列与以下逻辑:
- “源行”列E:这是此目标行所指的源数据中的实际行。 “列逻辑”是,它是在上面的行相同的数字 – 除非在上面的行等于最大计数。 因此,E5中的公式为:
=IF(F4=G4,E4+1,E4)
。 你还需要“初始化”列,即在E4中,我使用:=ROW(A3)+1
- 最大计数:当前源行所需的行数。 F4:
=INDEX(C:C;E4)
- 计数:这是计数器,当前源行已经被填充的频率。 逻辑就是简单地把上面的值加1,除非这个列中的源行与最后一行不同。 G4:
=IF(E4<>E3,1,G3+1)
现在只需要使用列E中存储的数字作为INDEX函数的参数,即将该公式从H4下来并且也复制到列I: =INDEX(A:A,E4)
。
现在只需要将5列的公式复制到所需的行数。 (请记住从第5行开始复制E列,而在第4行复制F:I列。