行和列的交集,包括if-else语句

时间:2017-04-04 13:06:29

标签: excel vba excel-vba

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

Tolerance sheet

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

我的问题是,是否可以使用普通的Excel公式或者我是否必须创建一个宏?有谁知道解决方案?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用CHOOSE选择D:E,F:H或I:K列,具体取决于a,b或c。

=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))

enter image description here

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

答案 1 :(得分:0)

您需要使用工作表更改事件,以查看用户何时进行了更改。下面的代码将启动你,并给你一般的想法,它需要进入相关的表单模块,即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。然后,您可以使用简单的运算符来比较它们