2010-04-12 66 views
0

VBA新手請幫忙。我很抱歉。我沒有做好讓自己清楚的工作。讓我再試一次。添加行後的公式

我的銷售代表將每個呼叫輸入到一個呼叫表中。他們每週要求50-60人;有些他們每週會看到不止一次,有些則每年只有幾次。在這個調用表上有4列;通話日期,客戶,數字日期以及自上次通話以來的天數。此工作表可能有數百行,其中很多是在不同日期調用的重複客戶。

我已經編寫了代碼,可以根據需要消除重複項(工作正常)。新呼叫使用NextRow = _添加(也可以正常工作)。 $C$2設置爲TODAY()

C列中的公式是$C10=$A10(C列格式化爲數字)。 D欄是自上次通話以來的天數; $C$2-$C10等簡單,工作正常。

問題是說我有50行(所有不同的客戶)按升序排序,並添加一個新的客戶,關鍵是新的。添加新客戶時,我需要C和D中的公式自動下拉一行。我可以將公式拖到時間頭上,一切都將工作,直到我排序,然後我的數據是我排序的底部,因爲列A中沒有日期的所有行都會在C和D中生成0。我的成品應該是一系列不同的客戶(不重複);與在最高層沒有被召喚的顧客一起。

我希望這是一個更好的解釋。我可以編寫代碼來忽略0嗎?

+0

對不起,但我無法理解;你想更新列C和D中所有單元格中的公式嗎?或者它只有一個單元格,並且您想要包含新添加的行。 – 2010-04-13 07:07:20

回答

1

我要去有點無路可退這裏說,也許你的公式需要重構......

例如。如果目標是計算自上次致電客戶以來的天數,那麼可以使用如下簡單公式: =(max(C:C)-Today()) 這將獲得列C中的最大值,並且從今天減去它。 如果您想獲得與此條目對應的D列中的值,那麼VLOOKUP()就是您的朋友。你可以這樣使用它: = VLOOKUP(MAX(C:C),C:D,2,FALSE)

希望這會有所幫助。另外,最好的方法是在VBA中完成你的問題,最簡單的方法是創建一個命名範圍。然後,您可以將$ C $ 2- $ D11替換爲命名範圍的名稱。要做到這一點最簡單的方法是說:

Range(Range(C2),Range(C2).End(xlDown)).Name = NAmeOfYourRange 

這實際上只是變得C2單元格,去向下方向和範圍NameOfYourRange

希望這有助於名字的最後一個非空白單元格:)