【问题标题】:vba function for multiple statement多个语句的vba函数
【发布时间】:2018-10-07 14:47:15
【问题描述】:

您好,我正在寻找从 excel 函数创建 vba 函数。 excel函数可以正常工作,但问题是函数很长并且达到了“if”的最大数量。

这是excel函数的一部分:

=IF(E49>=E50+$A$1;1;IF(E49<=E50-$A$1;-1;IF(E48>=E50+$A$1;1;IF(E48<=E50-$A$1;-1;IF(E47>=E50+$A$1;1;IF(E47<=E50-$A$1;-1;IF(E46>=E50+$A$1;1;IF(E46<=E50-$A$1;-1;0)))))))

我需要一个简单的 if 语句来判断单元格 E49 是否 >= E50+$A$1 或 = E50+$单元格 E50-$A$1 的 A$1 或

我需要启动一个 if 循环,该循环在到达语句时结束。 该示例是 excel 代码的一小部分,但它可能很长,因为如果在靠近 E50 的单元格上未达到 if 语句,则可以完成到单元格 E3 或 E1 创建一个很长的代码。我需要通过创建一个循环来删除所有这些额外的代码。

希望我已经解释清楚了。

例如

excel image sample

感谢您的帮助。

【问题讨论】:

  • “我希望我已经解释清楚了”。对不起,但我不认为你有。以... 结束对条件的描述并不是一个好兆头。它假设我们了解这种模式,对于没有像您一样沉浸在您的问题细节中的人,这不是一个安全的假设。
  • 您的描述存在另一个问题,E49 is &gt;= or &lt;= of cell E50+$A$1 肯定总是正确,因为给定任意两个数字 xyx &gt;= yx &lt;= y
  • IF(E49>=E50+$A$1;1;IF(E49= 加 A1 或
  • 最好解释一下您要对列E 执行的操作。所有这些If 语句应该做什么?您只(部分)解释了他们应该检查的条件。编写一个在一系列单元格上循环的 VBA 循环很容易,检查每个单元格的某些条件,但是您所写的内容中没有任何内容清楚地说明该循环除了检查某些条件之外应该做什么。将单个值放入单元格中?将 50 个值放入 50 个单元格中?什么价值观?这些价值观应该去哪里?
  • 要详细说明@JohnColeman 最后的评论:有时对于一个复杂的问题,重新考虑如何尝试解决问题可能会更好,而不是挂在一个复杂解决方案的实现上可能是也可能不是最好的方法。

标签: excel vba loops if-statement


【解决方案1】:

如果我理解正确的话,也许是这样的:

编辑:condition 声明中的登录错误

=IF(SUMPRODUCT((E3:E49>=E50+$A$1)+(E3:E49<=E50-$A$1))=0,0,LOOKUP(2,1/((E3:E49>=E50+$A$1)-(E3:E49<=E50-$A$1))))
                                 ^ 
  • 如果E3:E49 两个条件都不满足,则返回0
  • 如果满足第一个条件(从E49 开始并向上处理)是&gt;=,则返回1
  • 如果满足的第一个条件是&lt;=,则返回-1

【讨论】:

  • 哇,罗恩,这非常适合我的需要。非常感谢,非常感谢您的宝贵帮助!!但我知道我真的有很多东西要学。 :)
  • @muraglia 很高兴为您提供帮助。如果我的回答满足您的问题,如果您能将其标记为已接受,我将不胜感激。您可以阅读What should I do when someone answers my question了解更多信息
  • @muraglia 解决方案是使用数组公式。使用公式评估工具了解其工作原理。
猜你喜欢
  • 2015-02-16
  • 2017-09-25
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 2015-05-16
  • 2019-07-13
相关资源
最近更新 更多