【问题标题】:Intersection of row and column including if-else statement行和列的交集,包括 if-else 语句
【发布时间】:2017-04-04 13:06:28
【问题描述】:

所以我正在制作一个用于机械目的的公差计算器。我创建了一个具有指定公差的 Excel 表。使用此表,Excel 需要检查用户输入的哪一列和哪一行,然后返回相交值。

现在检查该列并不是什么大问题,因为它存在孔号。但是,对于行 Excel 需要检查值是否介于 B 和 C 的值之间,并使用该行与之相交。

我的问题是是否可以使用普通的 Excel 公式,还是我必须创建一个宏?有谁知道解决办法吗?

提前致谢!

【问题讨论】:

  • 当输入值在 1 到 3 之间时,如何确定是返回第 1 行还是第 2 行?
  • @C. Krepel 用户将在哪里输入值?就像雅各布说的,你如何确定第 1 行或第 2 行或第 3 行或第 4 行?您能详细说明一下流程,以便我们更好地帮助您吗?还尝试过什么?你有没有尝试过任何东西,代码,公式等......
  • 如果合并列标题:A-9,A-11,... 那么简单的 INDEX,MATCH,MATCH 将在公式中完成。
  • 感谢您的评论。用户将在另一张表中输入其值,然后将其传递给公差表并返回相交值。 @ScottCraner 我会试试你的方法。虽然用户也可以输入十进制值。有解决办法吗?

标签: vba excel


【解决方案1】:

您可以使用 CHOOSE 根据 a、b 或 c 选择列 D:E、F:H 或 I:K。

=INDEX(CHOOSE(MATCH(B2, {"a","b","c"}, 0), D6:E9, F6:H9, I6:K9), MATCH(A2, B6:B9, 1), MATCH(C2, CHOOSE(MATCH(B2, {"a","b","c"}, 0), D5:E5, F5:H5, I5:K5), 1))

C 列中的终止标称尺寸完全不相关。

【讨论】:

  • 嗯,这个实际上可以在没有任何宏的情况下解决问题。我会告诉你它是否有效!
【解决方案2】:

您需要使用工作表更改事件来查看用户何时进行了更改。下面的代码会让你开始,给你一个大致的思路,它需要进入相关的工作表模块,即VB编辑器中的“Sheet1”:

Private Sub Worksheet_Change(ByVal Target As Range)
    Debug.Print "Value: " & Target.Value
    Debug.Print "Row: " & Target.Row
    Debug.Print "Col: " & Target.Column
    Debug.Print "Col Header y: " & Cells(Target.Row, 1).Value
    Debug.Print "Row Header x: " & Cells(1, Target.Row).Value
End Sub

您将需要使用这些值来确定用户值是否正确。您需要使用标题更新行和列的值 1。然后您可以使用简单的运算符来比较它们

【讨论】:

  • 我会试试你的方法。感谢您的努力!
  • @C.Krepel 随时尝试编写代码以更适合您的情况,如果不起作用,请回来提出问题。祝你好运
猜你喜欢
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
  • 2015-05-16
  • 1970-01-01
相关资源
最近更新 更多