如果源数据总是在变化,是否应该使用Loop?或者有更好的方法吗?

时间:2013-10-14 18:53:26

标签: excel vba excel-vba

所以在表1中我可以说从单元格B2到E6 f(CN#)的公式取决于A2到A6中的值,让我们称它们为客户编号(CN#)。见下图。  这些客户编号对于旁边的列中的所有公式都是相同的,因此整个范围是A1-E5这些公式可以每月增加或减少,因此它可以在任何给定的月份A1-E5或A1-E8或A1 -E3。
我的问题是我需要一个接一个地复制和粘贴这些范围,并在每次发布新范围时更改客户编号或CN#。这些CN#位于sheet2

对不起语法不好但这件事正在踢我的屁股

编辑: 公式f(CN#)都是不同的。我想我应该解释一下我目前在做什么。 我拿A2-E5并将其复制到A6-E11。然后我将Value CN1更改为CN2。冲洗并重复,直到我到达最后一个CN# 如果数字行和列是静态的,这是一个简单的修复,但它们不是,它们每月都会更改 问题是重复公式(B2toE6),然后复制它们。我们称之为一组。所以我需要为每个客户编号设置一套。我正在考虑使用像

这样的动态范围

范围(细胞(1,2),将细胞(1,Columns.Count).END(xlToLeft))。选择

但我从那时起就失去了。

enter image description here

1 个答案:

答案 0 :(得分:1)

你必须在某个地方有一个辅助单元:告诉excel重复多少次 - 这意味着要改变单个单元格,而不是试图为多个单元格解决问题。

我做了几个假设,这些假设应该相对容易修改。

  1. 您要制作的列表从 A2
  2. 开始
  3. 您的客户列表从 Sheet2!A2
  4. 开始
  5. 您的辅助单元位于 B1
  6. 你的公式,从A4开始,然后用完了:

    =OFFSET(Sheet2!$A$2,INT(ROW()-ROW($A$2))/$B$1,0)
    

    当您的客户用完时,列表将开始生成0。如果你想要整洁,可以将函数包装在IF语句中

    =IF(OFFSET(Sheet2!$A$2,INT(ROW()-ROW($A$2))/$B$1,0)=0,"",OFFSET(Sheet2!$A$2,INT(ROW()-ROW($A$2))/$B$1,0))
    

    或者您可以使用条件格式设置单元格颜色和字体颜色相同以使其“隐藏”