动态速率表:如何更改乘以单元格的下拉列表

Dynamic rate tables: How to change multiplied cell by drop down list

提问人:LucJan 提问时间:4/7/2023 更新时间:4/7/2023 访问量:69

问:

我的目标是将一个平均值(由 2 个用户输入的值返回)乘以 2 个表中任一的唯一速率。

销售# 销售 $ 平均 Tkt AX 费率 MR 费率
100 10,000美元 100美元 ? ? ?

我有 2 个下拉列表:第一个代表 2 个表格(表 1 和表 2),第二个代表表 1 和表 2(医疗保健、教育等)中的列。

表1 医疗 教育
2.00% 3.00%
AX 费率 2.50% 4.00%
MR 费率 3.00% 4.50%
表2 医疗 教育
2.50% 3.50%
AX 费率 3.00% 4.50%
MR 费率 3.50% 5.00%

我希望当用户从第一个下拉列表中选择“表 1”,从第二个下拉列表中选择“医疗保健”时,它将调用表 1 - 医疗保健单元格中的费率,将 Avg.tkt 乘以表 1 - 医疗保健列中的费率(即 2.00% x 100 美元)并将其返回到新单元格中。

我已经通过嵌套 IF 语句实现了这一点:

=IF(C4="Table1",IF(C5="Healthcare",D31*J7,IF(C5="Education",D31*K7,C5="Charity",D31*L7),IF(C4="Table2",IF(C5="Healthcare",D31*J7,IF(C5="Education",D31*K7,C5="Charity",D31*L7)))))

但是想知道是否有更有效的方法来产生这些结果? 我想减少嵌套 IF 语句的使用(或至少减少数量)。

Excel IF-语句 嵌套

评论

0赞 cybernetic.nomad 4/7/2023
VLOOKUP、XLOOKUP 和 INDEX MATCH 都是您可能想要的东西......呃......查找
1赞 lisboakotor 4/7/2023
您的嵌套 IF 语句公式无效,不确定您是否粘贴不正确,但如果我将其复制到 Excel 中,我会收到“您输入的参数太多”错误。

答:

0赞 user11222393 4/7/2023 #1

我建议将这 2 个表连接起来并稍微改变结构,这样您就可以避免语句(想象一下,如果您需要使用更多表)并使用如下所示的内容:IF

=SUM(($D$9:$E$9=D4)*($B$10:$B$15=C4)*($C$10:$C$15=E4)*($D$10:$E$15))

结果:

enter image description here

使用该“筛选”值进行进一步计算。

1赞 lisboakotor 4/7/2023 #2

如果您不想或不能像另一个答案建议的那样将表连接在一起,则可以使用 IF 语句并将 INDEX 和 MATCH 公式嵌套在其中:

=IF($B$4="Table 1",INDEX($A$7:$C$10,MATCH(D$1,$A$7:$A$10,0),MATCH($B$5,$A$7:$C$7,0)),INDEX($A$12:$C$15,MATCH(D$1,$A$12:$A$15,0),MATCH($B$5,$A$12:$C$12,0)))

这将检查所选表是否为表 1。如果是,则它会在表 1 数据范围内查找该特定行业的费率指标。如果下拉列表不是表 1,则为表 2,因此它执行相同的查找,但针对表 2 的数据范围。

Screenshot of Excel solution using an IF statement with an INDEX and MATCH formula nested within.

1赞 Mayukh Bhattacharya 4/7/2023 #3

多种方法可以解决问题。也可以使用带有函数的表名,但是可以避免使用,因为它是线程的,因此会破坏多线程计算引擎。尽管如此,我还是会与其他方式分享解决方案,您可以尝试最适合您的查询的方法。ExcelINDIRECT()INDIRECT()Excel’s


enter image description here


方法一:-->使用INDIRECT() & TOROW()


• 单元格中使用的公式 --> 它向右溢出!H4

=TOROW(INDIRECT(E1&"["&F1&"]"))

• 或者,单元格中使用的公式 --> 不带 --> 它需要正确填充!H9#SPILL!

=INDEX(INDIRECT($E$1&"["&$F$1&"]"),COLUMN(A1))

方法二: --> 使用 with 和 orXLOOKUP()INDEX()CHOOSE()IF()

enter image description here


• 单元格中使用的公式 --> 使用H14IF()

=INDEX(XLOOKUP($F$1,TableOne[#Headers],
IF($E$1="TableOne",TableOne,TableTwo)),COLUMN(A1))

• 或者,单元格中使用的公式 --> 使用H19CHOOSE()

=INDEX(XLOOKUP($F$1,TableOne[#Headers],
CHOOSE(N($E$1<>"TableOne")+1,TableOne,TableTwo)),COLUMN(A1))

注意:在上述所有公式中,我都引用了结构化表,即 TableOneTableTwo 。请根据您的西装调整范围。