【问题标题】:Looping through two columns, storing the value if a certain conditoin is met [closed]循环遍历两列,如果满足某个条件则存储值[关闭]
【发布时间】:2019-01-15 21:48:24
【问题描述】:

我是 vba 的业余爱好者,但我有两列数据,第 1 列和第 2 列 - 长度各不相同

这应该可以在带有 if 语句的嵌套 for 循环中完成。

---- 抱歉,这里有一张图片可以帮助我说 --- 所以我想将第 2 列中的每个值与第 1 列进行比较,如果两者的差除以原始值

如果不符合该匹配项,则尝试第 1 列中的第二个值,如果找到匹配项,则第 2 列值已完成,现在转到下一个值。重复循环

我希望这是一个更好的解释。

问题图片:

【问题讨论】:

  • 我的 VBA 有点生疏了,但是... 执行 2 个 foreach 循环。 Foreach 然后为第二列设置一个暗淡(或增加一个索引并执行 arr[index] 然后在同一数组上的该 foreach 中执行另一个 foreach 但选择第一列。将第一列设置为第二个 foreach 中的另一个变量,然后做一个比较语句。
  • 如果我们有样本数据和预期结果,这将更容易回答。此外,“...小于百分之一”可以被解释为不止一种方式(小于0.01 或小于1/100th 的比较值?)。你能请edit your question提供更多信息吗?到目前为止,您尝试过的方法也很有用
  • 这听起来像一个公式会更容易和更有效的方式来做到这一点。把它放在第三列。如果 A1=B1 则“YEAH”,否则“AH man!”
  • “两者之间的错误”是什么意思?请分享样本数据和该样本数据的预期结果。不清楚你在这里做什么。
  • 好的,我已经添加了示例数据集的图像并阐明了我的意思。

标签: excel vba loops if-statement


【解决方案1】:

使用数组公式,您可以执行以下操作:

这是公式如何逐步计算的(选择公式的部分,然后按 F9 来计算所选部分并替换为结果:

将 TRUE/FALSE 数组相乘将其强制为 1/0 数组,这就是我们提供给 MATCH() 的内容,寻找第一个 1。

【讨论】:

  • 谢谢蒂姆,这正是我所需要的!
  • 您介意向我解释一下为什么它需要采用数组命名法吗?当我尝试使用索引匹配之前,我认为它不允许存储值,因为没有完全匹配但你已经在这里解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多