假设我们只想复制工作表中指定列的数据,例如第1、2、5列的数据,有多种实现方法,这里介绍使用数组的VBA代码实现。 ar = Sheet1.[A1].CurrentRegion var = Application.Index(ar, [row(1:1000)],
Array(1, 2, 5)) Sheet2.Range('A1:C' &
UBound(var)) = var上述代码将工作表Sheet1中的第1、2、5列的数据输出到工作表Sheet2中。数组和行都是固定的。如何针对不同的行使其成为动态的?为了涵盖数据集,假设在声明lRow变量后,数组(ar)可以是:可以利用Excel的Evaluate功能来生成灵活的行和列组合。VBA的rows.count命令可以确定区域内数据的终点,并存储该区域,以便在Index公式中使用。Sub
CopySpecialColsdynamic() ar = Sheet1.Range('A1',
Sheet1.Range('F' & Rows.Count).End(xlUp)) var = Application.Index(ar,
Evaluate('row(1:' & Sheet1.[A1].CurrentRegion.Rows.Count &
')'), Array(1, 2, 5)) Sheet2.Range('A1:C' &
UBound(var)) = var实际上,它的工作原理与前面的代码相同,但有一个优点,即灵活地基于列的长度。你可以根据实际数据范围和要复制的列,稍微修改上述代码,以满足你的需要。
|