2014-03-05 175 views
1

希望有人可以幫助我。很多年前,我爲我們園藝公司的VB 6編寫了一個完整的訂購系統,其功能與我需要使用Excel電子表格的方式相同,但我不再擁有代碼或者不知道自己做了什麼。基本上,我們有一個電子表格,每行都有項目編號(例如「12345」,項目描述(例如「Petunia Blue Frost」),該項目出售的倍數(例如「100 「,」48「,」288「),以及一個用戶可以輸入他們想要爲每個項目訂購的數量的列。在我以前的VB系統中,無論他們放在訂購的數量字段中,它都會自動圍繞它直到下一個倍數,因此,如果倍數是「100」,並且他們將「1」放在數量上,它會自動將其舍入到「100」;如果他們放上「101」,它會將它舍入到「200」。Excel 2010根據另一個單元格的值計算新值

我怎樣才能讓Excel自動執行此基礎上,有序的數量是什麼多是什麼?

提前致謝!

+0

好吧,我有點想通了。我可以使用吊頂功能。如果C1列有多個(比如說100),D1列有排序的數量(比如說52),那麼F1列有「= ceiling(D1,C1)」,它返回「100」。但是,是否有任何方法可以在D1中實現此功能(因此不需要新列)?我試圖把公式放在D1中,只是得到REF#錯誤。 –

+0

'= IF(test,true_condition,else_false_condition)'?因此,您的情況如下:'= IF(C1:D1> 100,ceiling(D1,C1),「」)' 您可能還必須有一對嵌套IF才能查找特定條件。如果您必須使用查找來從折扣表中獲取說明,請使用'= VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])' – Leptonator

+0

@KimJones您可能會發現Excel沒有在沒有使用事件的情況下具有該功能VBA。這聽起來像是你要求Excel自動將輸入值整理爲下一個倍數。 Excel公式不以這種方式工作。正如你已經說過的,大多數人都可以用'= CEILING(D1,C1)'完成這個工作。 – grovesNL

回答

0

我認爲這是正確的計算來完成你所需要的。

=CEILING(quantity/multiple) * multiple 

實施例的數據:

quantity: 101
multiple: 100
expected: 200

實施例:

量/多PLE = 1.01
CEILING(1.01)= 2
2 * 100 = 200

+0

這不起作用,也沒有解決問題。 '= CEILING(D1,C1)'是預期的輸出。即使使用新的編輯,它仍然不正確。 – grovesNL

+1

@grovesNL我沒有MS Excel,我正在使用Google Spreadsheet(女巫幾乎相同),請告訴我爲什麼這不起作用? –

+0

只是因爲'CEILING'有兩個參數。 'CEILING(價值,倍數)'會做問題的問題,寫在評論本身。作者不想使用它 - 他們希望對其進行修改。 – grovesNL

0

Excel公式不修改(在你的情況下,計算限額)就地值。你可能會修改VB中的文本字段。

您可以使用VBA來處理單元格更改事件並計算它,但這可能不是一種處理此問題的好方法。使用附加列執行=CEILING(D1,C1)可能是更好的解決方案。

+0

可能想提及如何使用VBA ...比如沒有無限循環的單元更改事件觸發器。 –

+0

@PortlandRunner工作表更改事件可以通過檢查值是否已經轉換爲其CEILING等價物來解決該問題 - 如果它具有,則不執行任何操作(即,沒有無限循環)。我仍然相信VBA事件方法不是處理這個問題的好方法,因爲原始輸入被破壞了。 – grovesNL

+0

我認爲使用VBA的變化事件是我需要的(我想改變原來的#) - 有人可以幫助代碼(因爲「天花板」不是VB函數)和無限循環?謝謝! –

相關問題