【问题标题】:Creating a two way lookup Price Matrix in Excel using VBA (Index/Match/SumProduct)使用 VBA (Index/Match/SumProduct) 在 Excel 中创建双向查找价格矩阵
【发布时间】:2019-07-20 12:44:19
【问题描述】:

我正在尝试为产品创建定价矩阵,但使用 Index/Match 或 SumProduct 公式对我来说是一场噩梦,我想知道 VBA 是否会更容易?

基本上,如果产品的宽度或高度介于两个数字之间,我需要引用的价格才能采用下一个定价范围。 (注意:在公式中四舍五入或使用上限函数对我也不起作用)

我尝试使用的代码示例如下:

=SUMPRODUCT(--(HeightRange=CEILING(Height,1000))*--(WidthRange=CEILING(Width,10))*PriceRange)

=INDEX(PriceRange,MATCH(MIN(ABS(HeightRange-Height)),ABS(HeightRange-Height),-1),MATCH(MIN(ABS(WidthRange-Width)),ABS(WidthRange-Width),-1))

示例表:

【问题讨论】:

    标签: excel vba indexing match sumproduct


    【解决方案1】:

    您可以像上面两个人所说的那样直接使用公式... 我在这里:

    =INDEX($A:$J,MATCH($N3,$A:$A,0),MATCH($M3,B$3:J$3,0))
    

    【讨论】:

      【解决方案2】:

      你可以像这样使用=AGGREGATE()

      =INDEX(A:E,AGGREGATE(15,3,(($A$4:$A$11>=N3)/($A$4:$A$11>=N3))*ROW($A$4:$A$11),1),AGGREGATE(15,3,(($B$3:$J$3>=M3)/($B$3:$J$3>=M3))*COLUMN($B$3:$J$3),1))

      【讨论】:

        【解决方案3】:

        用途:

        =INDEX(B:J,MATCH(N3,A:A),MATCH(M3,B$3:J$3))
        

        【讨论】:

        • 感谢您的回复,但这对我不起作用,就像我选择宽度 1601 和高度 1750 我希望它返回 111 英镑的值,而不是 96 英镑 :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-24
        • 1970-01-01
        • 2019-09-06
        • 1970-01-01
        • 2018-06-02
        相关资源
        最近更新 更多