【问题标题】:Excel formula to the value of a cell based on two cells' valuesExcel公式根据两个单元格的值转换为单元格的值
【发布时间】:2013-07-17 13:42:26
【问题描述】:

我可能在这里要求太多,但这也是我正在从下面的 excel 表中处理的要求的一部分如果我给出两个不同的值,我想找到指定单元格的值,我想使用 excel 中的 OFFSETMATCHINDEX 函数来实现。

有两种情况

场景一:

如果我给出 value1=3500(不在第一列)和 value2=75 Result1=1.59 和 Result2=1.89

场景二:

如果我给出 value1=3500 和 value2=85(两个值都不在网格的第一行和第一列),结果值应该是 Result1=1.59, Result2=1.89, Result3=1.51, Result4= 1.81 `

如何在 excel 中实现这一点?

Measure |2.5    |5      |10     |25     |50     |75     |100    |150    |200    
250     |0.835  |0.75   |0.69   |0.6    |0.528  |0.455  |0.383  |0.314  |0.245  
500     |1.044  |0.938  |0.863  |0.75   |0.675  |0.6    |0.525  |0.451  |0.378  
1000    |1.391  |1.25   |1.15   |1      |0.923  |0.845  |0.768  |0.689  |0.61   
2000    |1.948  |1.75   |1.52   |1.4    |1.321  |1.243  |1.164  |1.083  |1.002  
3000    |2.435  |2.188  |1.95   |1.75   |1.67   |1.59   |1.51   |1.426  |1.343  
4000    |2.853  |2.563  |2.3    |2.05   |1.97   |1.89   |1.81   |1.726  |1.643  
5000    |3.507  |3.15   |2.675  |2.4    |2.269  |2.188  |2.107  |2.021  |1.936  
10000   |       |4.553  |4      |3.72   |3.56   |3.477  |3.394  |3.304  |3.215  
15000   |       |5.691  |5      |4.6    |4.469  |4.385  |4.301  |4.209  |4.117  
20000   |       |6.545  |5.8    |5.3    |5.151  |5.066  |4.981  |4.888  |4.795  
25000   |       |7.527  |6.4    |5.83   |5.666  |5.573  |5.48   |5.377  |5.274  
50000   |       |9.785  |8.32   |7.579  |7.366  |7.245  |7.123  |6.99   |6.856  

【问题讨论】:

  • 首先将精确 MATCH()(最后一个参数=0)的结果与使用 1 作为最后一个参数的结果进行比较:如果第一个返回错误,那么您知道您需要返回多个值(对于每个直接中的第二个值,将 1 添加到您传递给 OFFSET() 的值)

标签: excel excel-formula


【解决方案1】:

我今天浏览stackoverflow时才注意到这个问题,由于它从未真正完整地解决过,我决定回答它以供将来面临同样问题的人参考。

这是解决这个问题的众多可能方法中的一种

假设 Measure 表放置在 Excel 工作表的 A1:J13 范围内,值 1 在单元格 A16 中,值 2 在单元格 C16 中,结果值 1 到 4 存储在单元格范围 E16:F17 中,那么我们可以在 Excel 2010/2013 中使用以下公式来提取您需要的信息:

在单元格 E16(存储结果 1 的值的单元格)中,输入以下公式:

=IF(AND(IFERROR(MATCH(A16,A1:A13,0),FALSE), IFERROR(MATCH(C16,A1:J1,0),FALSE)),INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,0)-1),(MATCH(C16,A1:J1,0)-1))),1,1), INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)-1),(MATCH(C16,A1:J1,1)-1))),1,1))

在单元格 E17(存储结果 2 值的单元格)中,输入以下公式:

=IF((IFERROR(MATCH(A16,A1:A13,0),FALSE))," ", INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)),(MATCH(C16,A1:J1,1)-1))),1,1))

在单元格 F16(存储结果 3 值的单元格)中,输入以下公式:

=IF((IFERROR(MATCH(C16,A1:J1,0),FALSE)),"",INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)-1),(MATCH(C16,A1:J1,1)))),1,1))

在单元格 F17(存储结果 4 值的单元格)中,输入以下公式:

=IF(AND(IFERROR(MATCH(A16,A1:A13,0),FALSE)=FALSE, IFERROR(MATCH(C16,A1:J1,0),FALSE)=FALSE),INDEX((OFFSET($A$1:$J$13,(MATCH(A16,A1:A13,1)),(MATCH(C16,A1:J1,1)))),1,1)," ")

【讨论】:

    【解决方案2】:

    假设您的工作簿被放入命名范围 Measure(B2:J13)、Value 1(B15) 和 Value 2(B16),那么公式:

    =INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1),MATCH(Value_2,$B$1:$J$1,1))
    =INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1),MATCH(Value_2,$B$1:$J$1,1)+1)
    =INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1)+1,MATCH(Value_2,$B$1:$J$1,1))
    =INDEX(Measure,MATCH(Value_1,$A$2:$A$13,1)+1,MATCH(Value_2,$B$1:$J$1,1)+1)
    

    将返回您需要的值。使用MATCH 函数选择行,用+ 1(或类似的)选择性地偏移它,然后使用INDEX 选择表中的项目。

    表格布局是装饰性的。没有什么能阻止列和行标签完全位于别处。命名范围引用输入值。

    1000、10 的附加输入值返回结果 1.15、1、1.52、1.4。

    【讨论】:

    • 我重新创建了工作簿并确认它返回正确的结果和更正的范围。如果 Measure 命名范围按预期从 A1 而不是 B2 开始,我会得到你的结果。
    【解决方案3】:

    如果这有帮助,假设 Measure 是从 A1 开始的命名范围并且 value1 和 value2 是命名范围,以下公式似乎显示了角落的值:

    =INDEX(测量,IFERROR(MATCH(value1,A:A,0),MATCH(value1,A:A,1)),IFERROR(MATCH(value2,1:1,0),MATCH(value2, 1:1,1)))

    =INDEX(测量,IFERROR(MATCH(value1,A:A,0),MATCH(value1,A:A,1)),IFERROR(MATCH(value2,1:1,0),MATCH(value2, 1:1,1)+1))

    =INDEX(测量,IFERROR(MATCH(value1,A:A,0),MATCH(value1,A:A,1)+1),IFERROR(MATCH(value2,1:1,0),MATCH(值2,1:1,1)))

    =INDEX(测量,IFERROR(MATCH(value1,A:A,0),MATCH(value1,A:A,1)+1),IFERROR(MATCH(value2,1:1,0),MATCH(值2,1:1,1)+1))

    【讨论】:

      【解决方案4】:

      不完全是你想要的,但这是我的尝试:

      B19输入以下公式,然后复制粘贴到绿色表格中的所有单元格。

      =IF(OR(AND($B$15=$A19,$B$16=B$18),AND($B$15>$A18,$B$15<$A20,$B$16>A$18,$B$16<C$18)),B2,0)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        • 1970-01-01
        • 2019-03-27
        • 1970-01-01
        • 1970-01-01
        • 2017-05-17
        • 2021-04-22
        相关资源
        最近更新 更多