分享

VBA技巧:使用数组复制不同的列

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多