2012-07-10 70 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