2012-07-10 94 views
1

到目前为止,我已经设法创建一个搜索功能,可以扫描列并收集数组中的行。然后我在另一张纸上打印数组以形成一张表格。我用一些标准来做到这一点,这意味着我得到不同大小的不同数组。将公式插入可变行数

对于我的问题。我想为每一行进行计算。 ActiveCell.FormulaR1C1 =" = TRUNC ((RC [-5], RC [-1])/7) "。我如何制作适合有多少条线的循环。有些地方也有差距。

这里是一个数组如何打印的例子:

For i = 1 To nS - 1 
     Sheets("DataSheet").Select 
     Union(Sheets("raw_list").Cells(arrStart(i), NameCol), Sheets("raw_list").Cells(arrStart(i), PhaseCol), Sheets("raw_list").Cells(arrStart(i), ToStartCol), Sheets("raw_list").Cells(arrStart(i), ToDefineCol), Sheets("raw_list").Cells(arrStart(i), ToMeasureCol), Sheets("raw_list").Cells(arrStart(i), ToAnalyseCol), Sheets("raw_list").Cells(arrStart(i), ToImproveDevCol), Sheets("raw_list").Cells(arrStart(i), ToImproveIndCol), Sheets("raw_list").Cells(arrStart(i), ToControlCol), Sheets("raw_list").Cells(arrStart(i), ToClosedCol)).Copy 
     Cells(r, 1).Select 
     ActiveSheet.Paste 
     With Selection.Interior 
      .Pattern = xlNone 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 
     End With 
     r = r + 1 
    Next 

感谢任何帮助!

编辑:添加了一张图片来显示它的外观。 enter image description here

回答

2

如果存在差距,我们在工作中使用的是一种简单但不太优雅的解决方案,即在相邻列中添加某种标记。例如,我们在同一行的单元格中添加“END”或类似的东西,但是col + 1或col-1与您正在比较的列相同。

另一种解决方案是查看下一个元素是否也是空白的,但只有当您有单个间隙时才能使用。

最后,我看到的最后一个解决方案是,当你处于空白状态时,使用xlDown,如果你在2003年的最后一个单元65535,并且2007年接近一百万,如果我的记忆为我服务,那么你就完成了。

+0

从底行的单元格开始并使用xlUp? – Dan 2012-07-10 11:32:50

+0

嗨,谢谢你的回复。我也应该提到我对EXCEL VBA很新颖。添加了一张图片来展示它的外观。所以我想在K:列中进行计算。而差距在哪里应该是“头条”,就像顶部的灰色标题一样。 您的答案可能是正确的,但我需要更多的脚本来管理代码:/并再次,谢谢 – Andreas 2012-07-10 11:34:06

+1

通常您想消除空格,以便您可以遍历行并使用Do ... Loop直到变量=“”。至少,这是最简单的方法。有了这样的循环,只要你碰到一个空单元,你就可以停下来。此外,还有一个使用的行属性:ActiveSheet.UsedRange.Rows.Count。你可以设置它等于这样的变量 - 变量= ActiveSheet.UsedRange.Rows.Count,并告诉你的循环在你的iterator =变量时停止。 – 2012-07-10 12:41:46