您好,我希望使用 Excel 进行库存管理。我的问题是,简单地说,我需要 3 个单元格;“数量”、“每件费率”和“总计”。如果我将值赋给数量和费率,我需要得到总计。同时,如果我将值赋给数量和总计,我需要得到每件费率。如何在 Excel 上同时完成这些操作?
答案1
如果您知道每个单元格中的条目类型,您可以选择等待条目完成或运行计算。
Excel 有一个专门用于此目的的函数...哦...不,它没有。该TYPE
函数仅告诉您单元格中结果的类型,无论是直接数据输入还是公式结果。它不会告诉您单元格中输入的实际材料,例如是否存在公式。
但是,Excel 最终引入了一个名为的函数FORMULATEXT
,它将返回单元格中的公式,并且,如果不存在公式,则会显示错误,这对您很有帮助。所以现在您可以测试公式是否存在。
因此,假设您的输入将出现在单元格 A2:C2 中,用于输入数量、费率和总计,请按以下顺序使用以下公式:
=IFERROR(IFERROR(FORMULATEXT(C2),C2)/IFERROR(FORMULATEXT(B2),B2),"Entry?")
=IFERROR(IFERROR(FORMULATEXT(C2),C2)/IFERROR(FORMULATEXT(A2),A2),"Entry?")
=IFERROR(IFERROR(FORMULATEXT(A2),A2)*IFERROR(FORMULATEXT(B2),B2),"Entry?")
以最后一个为例。如果 A2 有公式,则该文本将返回到 C2 中的公式。B2 也一样。因此,如果两者都有公式(因此用户没有输入),则将返回两个字符串并将它们相乘,从而产生错误。IFERROR
然后,外部返回字符串“Entry?”,它可以是任何你喜欢的东西,而不仅仅是那种字符串。
如果任一单元格包含用户输入的值,则将FORMULATEXT
返回错误,IFERROR
包装它的内部将为公式提供单元格中的实际值。如果其中只有一个有值,则将值乘以字符串会产生错误,因此会得到“Entry?”字符串。
如果两者都没有公式,则两者都返回各自的值以及执行的算术。对于最后一个,那是乘法。对于其他两个,那是除法。
因此,最终结果是,如果任何单元格中都没有输入任何内容,则三个单元格会显示“Entry?”。如果一个单元格中有输入内容,而其他单元格中没有,则显示该输入内容(因为它抹去了公式...),而其他两个单元格中则显示“Entry?”字符串。如果在另外两个单元格中的一个单元格中输入值,则第三个单元格会立即更改为其算术设置的结果。
请记住,所有这些都不会重置。因此,如果用户输入了“数量”的值,然后想“哎呀,这要输入到“费率”中。”并删除它,然后将其输入到该行的“费率”单元格中,那么一切都结束了,因为“数量”已经失去了其公式,并且值为 0。
Excel 本身无法在单元格中设置公式,当用户输入值后公式仍会保留。使用 VBA,您可以轻松实现这一点,但您可以轻松创建一个宏,打开一个快速表单,让用户填写两个值并按 Enter 加载。它可以在选择单元格时激活,然后按任何可以输入数据的按键即可。
使用上述公式方法,您仍然可以编写一个宏,让用户单击按钮将公式恢复为原始形状并开始为整行输入数据。这将解决上述问题,但仍然需要宏。
但是,假设您拥有的是优质用户,而不是失败者用户(或“Lusers”),上述公式可以为您完成这项工作。尤其是在正式表格中,在添加行时复制一列公式会非常完美地将它们放入每个新行中,根据需要。