Excel 是否可以将特定范围的变体转储到工作表中?
我有一个这样的变体Excel 是否可以将特定范围的变体转储到工作表中?,excel,vba,Excel,Vba,我有一个这样的变体 var = sheet1.Range("A1:P3600").Value 我做了一些操作,并在变体中将不需要的行推到顶部。现在我必须将var变量从某个范围复制到另一个表中 sheet1.range("A3444:P" & i).value = var(range(cells(r,"A").cells(l,"P")) 也就是说,应将var(350到var末尾)复制到另一张表中。可能吗?我们可以这样做吗?一种方法是将缩减后的数组转储到第二个数组,然后将第二个数组转储到
var = sheet1.Range("A1:P3600").Value
我做了一些操作,并在变体中将不需要的行推到顶部。现在我必须将var变量从某个范围复制到另一个表中
sheet1.range("A3444:P" & i).value = var(range(cells(r,"A").cells(l,"P"))
也就是说,应将var(350到var末尾)复制到另一张表中。可能吗?我们可以这样做吗?一种方法是将缩减后的数组转储到第二个数组,然后将第二个数组转储到您的范围 下面的代码生成一个包含3600行16列(即a:p)的变量数组,将数据转储到数组中以获取样本数据(注意,您已经将此数组作为Var),然后使用一个变量作为标记将数组缩减为第二个数组,然后将第二个数组写入范围 更新以匹配您的确切数据位置。在您的例子中,您已经有了Var1(您的Var),因此您只需要代码的第二部分,从
lngStop=350开始,并使我的代码Var1
引用Var
您只能将数组的一部分拍打到工作表上,但前提是该部分位于数组的左上角,即仅第一个n
列和第一个m
行。没有直接的方法可以将最后的n
列和最后的m
行拍打。在本例中,您必须将内容转移到第二个更小的数组中,然后将其转储到工作表上,如@brettdj的回答中所示——这很好,但它有点迂回,而且编码太多,不符合我的口味
相反,如果您可以将“不需要的行”向下推到数组的底部,那么将该数组的顶部行拍打到一张纸上(忽略最后350行)就是一行
下面是一个示例,其中读入一个4x3数组,并且只有左上角的3x2被回击到工作表上。秘密在于使目标范围小于整个阵列
Dim v
v = Range("A2:C5")
Range("E2:F4") = v
与其将不需要的行推到顶部,不如将它们删除,或者只将需要的行复制到另一个数组。我不同意(出于好感),因为我认为要求某人修改其现有代码以进行底部排序是一个重要的绕道,这比我的小红绿灯更重要(在我的解决方案中,实际执行工作的代码大约有10行)但更重要的是,这种方法没有灵活性,它只适用于一种情况,一旦添加了进一步的代码来移动行,而我的代码可以很容易地调整为修剪顶部和底部,每三行等等。当然,你的方法肯定更灵活,这是一个很大的优点。我的方法更干净,至少我认为是这样。我想这是一个品味的问题!
Dim v
v = Range("A2:C5")
Range("E2:F4") = v