使用 VBA (Index/Match/SumProduct) 在 Excel 中创建双向查找价格矩阵
Creating a two way lookup Price Matrix in Excel using VBA (Index/Match/SumProduct)
我正在尝试为产品创建定价矩阵,但事实证明使用 Index/Match 或 SumProduct 公式对我来说是一场噩梦,我想知道 VBA 是否会更容易?
基本上,如果产品宽度或高度介于两个数字之间,我需要报价才能进入下一个定价范围。 (注意:在公式中四舍五入或使用 Ceiling 函数对我也不起作用)
我尝试使用的代码示例是:
=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))
示例Table:
使用:
=INDEX(B:J,MATCH(N3,A:A),MATCH(M3,B:J))
您可以像这样使用 =AGGREGATE()
:
=INDEX(A:E,AGGREGATE(15,3,(($A:$A>=N3)/($A:$A>=N3))*ROW($A:$A),1),AGGREGATE(15,3,(($B:$J>=M3)/($B:$J>=M3))*COLUMN($B:$J),1))
你可以像上面两个人说的那样直接使用公式...
我在这里:
=INDEX($A:$J,MATCH($N3,$A:$A,0),MATCH($M3,B:J,0))
我正在尝试为产品创建定价矩阵,但事实证明使用 Index/Match 或 SumProduct 公式对我来说是一场噩梦,我想知道 VBA 是否会更容易?
基本上,如果产品宽度或高度介于两个数字之间,我需要报价才能进入下一个定价范围。 (注意:在公式中四舍五入或使用 Ceiling 函数对我也不起作用)
我尝试使用的代码示例是:
=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))
示例Table:
使用:
=INDEX(B:J,MATCH(N3,A:A),MATCH(M3,B:J))
您可以像这样使用 =AGGREGATE()
:
=INDEX(A:E,AGGREGATE(15,3,(($A:$A>=N3)/($A:$A>=N3))*ROW($A:$A),1),AGGREGATE(15,3,(($B:$J>=M3)/($B:$J>=M3))*COLUMN($B:$J),1))
你可以像上面两个人说的那样直接使用公式... 我在这里:
=INDEX($A:$J,MATCH($N3,$A:$A,0),MATCH($M3,B:J,0))