在Excel中有可变单元格的计算

我认为我对Excel的理解力足够好,直到老板要求我在excel和MATCHINDEX方面做一些事情,对于我的生活我无法弄清楚这些function是如何工作的。 也许更恰当的是,我无法弄清楚他们在我看的电子表格中是如何工作的。 我只是仔细地引导你,仔细想要做什么。

我开始创build一个下拉列表,这是没有问题的。 下拉列表是基本上是概率表的列表。 为了跳过一些不相关的math运算,每个表格都有一个单一的数字,这个数字是从表格中的所有数字中生成的,这些数字将在电子表格的其他部分进行一些计算。 这些表格中的每一个也都有一个名称(顶部单元格),与下拉列表中的条目匹配。

[如果有人知道如何格式化这个问题,那么请问我的问题有点容易,请随时告诉我。 我不知道如何为excel格式化stackexchange问​​题。]

所以最终,我有两个正在进行计算的主表。 计算本身是不相关的。 相关的是,我需要能够在计算中添加一个值,这个值可以根据从下拉列表中select的内容而改变。 所以让我试着举个例子。

可以说我有这张桌子:

 | Month | Balance | Interest Rate | |:--------:|:-------:|:-------------:| | January | 100.00 | 1% | | February | 101.00 | 1% | | March | 102.01 | 1% | | April | 103.03 | 1% | | May | 104.06 | 1% | | June | 105.10 | 1% | 

我想要利率依赖下拉列表,以便也许我已经build立了从一个单元格的表中生成我的下拉列表是这样的:

 | Interest Rate | |:-------------:| | Low | | Medium | | High | 

我有三张标有“低”,“中”和“高”的表格。 这些表格中的每一个都会进行一些计算,以得到最终的利率结果,即最上面的表格中显示的数字。 所以,如果我select“高”,我的表将看起来像这样。

 | Month | Balance | Interest Rate | |:--------:|:-------:|:-------------:| | January | 100.00 | 5% | | February | 105.00 | 5% | | March | 110.25 | 5% | | April | 115.76 | 5% | | May | 121.55 | 5% | | June | 127.63 | 5% | 

我很确定我需要索引和匹配function来做到这一点。 我甚至会提出一个与我正在做的事情接近的公式,但是我似乎无法破译所有事情的工作方式。

=INDEX($U$13:$BM$416,MATCH(D12,$T$13:$T$416,0),MATCH($A$13,$U$11:$BM$11,0) + 1) * SUM(P:P)

我知道,当你看不到工作表时,这并不意味着什么,但是这个expression式与我所要做的非常接近。 我想我最终的问题是,如果有人会帮助我如何在Excel中完成这个任务?

编辑:这是一个更好的一瞥

比方说,我有这3个表显示各种不同的东西(如汽车贷款,Mortage,信用卡)的利率。 “######”只是显示在那些单元格中有用于计算底部数字(0.01,0.03等)的值。 我们也可以说这三个数据表的excel范围是A1:I6

 | | DataTable 1 | | | DataTable 2 | | | DataTable 3 | | |:------------:|:---------------:|:-------------:|:------------:|:---------------:|:-------------:|:------------:|:---------------:|:-------------:| | Low,Interest | Medium,Interest | High,Interest | Low,Interest | Medium,Interest | High,Interest | Low,Interest | Medium,Interest | High,Interest | |--------------|-----------------|---------------|--------------|-----------------|---------------|:-------------|-----------------|---------------| | ####### | ####### | ####### | ####### | ####### | ####### | ####### | ####### | ####### | | ####### | ####### | ####### | ####### | ####### | ####### | ####### | ####### | ####### | | 0.01 | 0.03 | 0.05 | 0.02 | 0.04 | 0.06 | 0.10 | 0.20 | 0.30 | 

我在A8中有一个下拉列表,其中包含值数据表1,数据表2和数据表3。

比方说,我有另一个表( 范围是K1:M14 ),看起来像这个问题的第一个表。

 | Month | Balance | Medium Interest | |:---------:|:-------:|:---------------:| | January | $100.00 | 3% | | February | $103.00 | 3% | | March | $106.09 | 3% | | April | $109.27 | 3% | | May | $112.55 | 3% | | June | $115.93 | 3% | | July | $119.41 | 3% | | August | $122.99 | 3% | | September | $126.68 | 3% | | October | $130.48 | 3% | | November | $134.39 | 3% | | December | $138.42 | 3% | 

我写了一个公式来确定3%是如何进入中等利益的。

 =INDEX($A$6:$I$6,MATCH($A$8,$A$1:$I$1,0),MATCH($M$2,$A$2:$I$2,0)) 

当我在下拉列表中select数据表1时,它将起作用。 它正确地放置数据表1的中等利率的3%,但是当我select另外两个数据表中的任何一个时,我得到一个无效的单元格引用错误。 这实际上是我在真正的电子表格中需要做的。

不知道我可以说怎么做你想要的,但是我至less可以解释一下MATCHINDEX ,以及你的公式和他们做了什么 – 希望这将是足够的!

MATCH(what,in_where,match_type)将返回基于match_type的数组/范围in_where的索引。 “最好的”匹配types是0 – 就像你的例子 – 这意味着“完全匹配”。 其他的选项是1 “小于”, -1为“大于” – 都要求你in_wheresorting…

所以你第一个例子MATCH(D12,$T$13:$T$416,0)正在寻找在$T$13:$T$416范围内的D12的确切值。

INDEX(in_where,row,column)将返回数组/列in_where row和列column

在你的例子中,你正在寻找范围$U$13:$BM$416与由MATCH ES给出的行/列…第一个MATCHT列大致寻找D12 ,第二个大致寻找A1311行。 (即看起来你的“表”在第11行中有标题,在T列中有“键”,而你正在search它们的位置的交集)。列中的+1将正确地alignment由MATCH返回的索引和INDEX的列号…

没有看到这个(例如像保pipe箱或屏幕抓取文件)很难说更多 – 但我希望这可以帮助!

顺便说一句, INDEXMATCH作为一个组合也可以很好的替代VLOOKUP如果你的“key”列在你想要的“value”列的右边(或者你有一个宽表重新计算)

基于问题的第二部分的更新
新的例子给出了公式: =INDEX($A$6:$I$6,MATCH($A$8,$A$1:$I$1,0),MATCH($M$2,$A$2:$I$2,0))
INDEX将返回给定行/列的值。 在这个例子中,你的“表”是单行$A$6:$I$6所以你需要在这里给出第1行 – 你不是在一个网格中查找,而只是一个列表。

因此,您正在寻找正确的DataTable(从下拉列表中select)的兴趣级别(表格顶部的Low / Medium / High)的兴趣值。 有几种方法可以做到这一点,这取决于你的控制…

  1. 创build一个真正的数据网格与低/中/高向下,1/2/3沿顶部和%里面 – 然后使用INDEX按原计划… MATCH的select行/列
  2. 如果这样做有点儿麻烦,那么如何创build一个新的“复合键”到你的表中呢?例如第2行可以包含1_Low,1_Medium,1_High,2_Low等等。然后你只用一个search,但是连接key: =INDEX($A$6:$I$6,1,MATCH($A$8 & "_" & $M$1,$A$2:$I$2,0))

否则,您首先需要在第一个标题行中find“DataTable 1”,并使用它来限制范围以search利率级别标题…这有点复杂,并且更多依赖于您的详细信息表格(例如,他们都是相同的列数 – 低/中/高或做一些非常高)

中等利率栏中3%的公式应为:

 =INDEX(A6:I6,,MATCH(A8,A1:I1,0)+1) 

此公式返回索引数组A6中的值:I6。 由于数组A6:I6中只有一行数据,因此没有必要指定索引函数的行位置。 这就是为什么有两个逗号在一起 – 行参考丢失,没有必要。 MATCH根据您的下拉列表提供该function的列号参考,这将是值1,4或7,然后+1再移动一列。 请确保在单元格A1中有“DataTable 1”,单元格D1中有“DataTable 2”,单元格G1中有“DataTable 3”。