2014-03-05 63 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函数)和无限循环?谢谢! –

相关问题