【问题标题】:Excel replace numbers with custom unequal rangesExcel用自定义不等范围替换数字
【发布时间】:2013-12-23 16:16:34
【问题描述】:

假设我有以下数据

  Name    Output
   A        0.1
   B         7
   C         0.4
   D        0.9
   E        1.1
   F        12
   G        22

我想用自定义范围替换输出变量:

  Name    Output   Output_2
   A        0.1       0m-0.3m
   B        7         6y-10y
   C        0.4       0.4m-0.6m
   D        0.9       0.7m-1y
   E        1.1        1y-5y
   F        12        11y-20y
   G        22        21y-40y

现在,我正在这样做(一长串嵌套的 IF)

=IF([@Tenor]<= 0.25, "0m-3m", IF([@Tenor]<=0.5, "4m-6m", IF([@Tenor] <= 1, "7m-1y",IF([@Tenor]<=5,"2y-5y",IF([@Tenor]<=10,"6y-10y",IF([@Tenor]<20,"11y-20y",IF([@Tenor]<40,"20y-40y")))))))

它有效,但我担心随着范围数量的增加,这将是痛苦的写。我希望我可以在某个地方写下一个范围,然后让 excel 查找它并做一些案例类型的事情。

【问题讨论】:

  • 你试过VLOOKUP吗?看起来这样就可以了。
  • @DougGlancy 据我所知,VLOOKUP 可以使用唯一标识符访问记录,然后读取记录的不同列值。虽然“名称”在我的示例中是唯一的,但它在我的实际数据中并不是唯一的,即使是,我还没有想出如何使用 VLOOKUP 将不同的“输出”值合并到范围中。但我正在考虑。
  • 是的,VLOOKUP 更适合使用唯一标识符匹配数据。但是您也可以将其用作近似标识符。您在 VLOOKUP 函数的最后一个参数中指定:1 - 近似匹配,0 - 精确匹配。
  • 哦,我明白了。这太酷了。感谢 Taosique 和 Doug Glancy!

标签: excel


【解决方案1】:

假设您的前三列是 ABC(就像您发布的第二个代码块中一样)。将以下数据添加到 EF 列(这将是您的映射数据):

Output   Output2
0        0m-3m
0.25     4m-6m
0.5      7m-1Y
1        2y-5y
5        6y-10y
10       11y-20y
20       20y-40y
40       20y-40y

然后将以下公式写入C2单元格并向下拖动:

=INDEX($F:$F,MATCH(B2,$E:$E,1))

更新:您可以使用近似 VLOOKUP 更简单地做到这一点:

=VLOOKUP(B2,$E:$F,2,1)

【讨论】:

  • 我可以让“VLOOKUP 近似”只在一个方向上近似吗?例如,我希望 0.249 近似为 0 和“0m-3m”而不是 0.25 和“4m-6m”?
  • 是的,据我所知,VLOOKUP 匹配背后的逻辑是“等于或大于”。因此,如果您的映射数据中有值 0 和 0.25,则 0.249 会映射到 0,而 0.25 会映射到 0.25。
猜你喜欢
  • 1970-01-01
  • 2021-01-02
  • 2016-08-09
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多