【问题标题】:Excel 2010 calculate new value based on another cell's valueExcel 2010 根据另一个单元格的值计算新值
【发布时间】:2014-03-05 21:00:10
【问题描述】:

希望有人可以在这里帮助我。许多年前,我用 VB 6 为我们的园艺公司编写了一个完整的订购系统,其功能与我需要 Excel 电子表格的方式相同,但我不再拥有代码,也不知道我做了什么。

基本上,我们有一个电子表格,每一行都有商品编号(例如“12345”、商品描述(例如“Petunia Blue Frost”)、商品的销售倍数(例如“100” , "48", "288") 和一列用户可以输入他们想为每个项目订购的数量。在我的旧 VB 系统中,无论他们在订购数量字段中输入什么,它都会自动将其四舍五入到下一个倍数。因此,如果倍数是“100”并且他们将“1”放在 ord 数量中,它会自动将其四舍五入为“100”;如果他们输入“101”,则将其四舍五入为“ 200 英寸。

如何让 Excel 根据倍数和订购数量自动执行此操作?

提前致谢!

【问题讨论】:

  • 好的,我想通了。我可以使用天花板功能。如果 C1 列具有倍数(例如 100)并且 D1 列具有有序数量(例如 52),则 F1 列具有“=ceiling(D1,C1)”并返回“100”。但是,是否有任何方法可以在 D1 中发生该功能(因此不需要新列)?我试图将公式放在 D1 中,但得到 REF# 错误。
  • =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])
  • @KimJones 如果不使用 VBA 中的事件,您可能会发现 Excel 没有该功能。听起来您要求 Excel 自动将输入值四舍五入到下一个倍数。 Excel 公式不能以这种方式工作。正如您已经说过的,大多数人会使用=CEILING(D1,C1) 来完成此操作。

标签: excel worksheet-function


【解决方案1】:

Excel 公式不会就地修改(在您的情况下,计算 CEILING)值。您可能正在修改 VB 中的文本字段。

您可以使用 VBA 来处理单元格更改事件并计算它,但这可能不是一个很好的处理方法。使用附加列执行=CEILING(D1,C1) 可能是更好的解决方案。

【讨论】:

  • 可能要提一下如何使用VBA...比如没有无限循环的单元格更改事件触发。
  • @PortlandRunner 工作表更改事件可以通过检查值是否已转换为 CEILING 等效项来解决此问题 - 如果已转换,则什么也不做(即没有无限循环)。我仍然认为 VBA 事件方法不是处理这个的好方法,因为原来的输入被破坏了。
  • 我认为使用 VBA 的更改事件是我所需要的(我想更改原来的 #)——有人可以帮忙处理代码(因为“天花板”不是 VB 函数)和与无限循环?谢谢!
  • 您可以轻松编写CEILING 函数,方法是将原始值除以因子,四舍五入到最接近的整数,然后乘以因子。或者,您可以使用msdn.microsoft.com/en-us/library/… 中描述的WorksheetFunction.Ceiling 直接调用Excel 的函数
【解决方案2】:

我认为这是完成您需要的正确计算。

=CEILING( quantity / multiple ) * multiple

示例数据:

quantity: 101
multiple: 100
expected: 200

例子:

数量/倍数 = 1.01
天花板(1.01)= 2
2 * 100 = 200

【讨论】:

  • 这不起作用,也没有解决问题。 =CEILING(D1,C1) 是预期的输出。即使有了新的编辑,它仍然不正确。
  • @grovesNL 我没有 MS Excel,我使用的是 Google 电子表格(witch 几乎一样),你能告诉我为什么这不起作用吗?
  • 只是因为CEILING 有两个参数。 CEILING(value,multiple) 将按照评论本身所写的问题进行操作。作者不想使用它 - 他们希望修改它。
猜你喜欢
  • 1970-01-01
  • 2023-02-05
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
相关资源
最近更新 更多