首页 > 解决方案 > 根据多个条件返回值

问题描述

我有一种情况,在工作簿的 2 张纸上设置了 2 张桌子。表一看起来像

<table style="width:50%">
  <tr>
    <th>Zone</th>
    <th>Journey</th> 
    <th>Price</th>
  </tr>
  <tr>
    <td>A</td>
    <td>Return</td> 
    <td></td>
  </tr>
  <tr>
    <td>C</td>
    <td>Single</td> 
    <td></td>
  </tr>
</table>

第二个看起来像

<table style="width:30%">
  <tr>
    <th></th>
    <th>Return</th> 
    <th>Single</th>
  </tr>
  <tr>
    <td>A</td>
    <td>250</td> 
    <td>165</td>
  </tr>
  <tr>
    <td>B</td>
    <td>305</td> 
    <td>200</td>
  </tr>
  <tr>
    <td>C</td>
    <td>355</td> 
    <td>230</td>
  </tr>
</table>

场景是:我想通过查看 Zone 以及是回程还是单程来恢复价格。因此,对于表 1 的第一行,它将是 Zone A,Return,250。

我曾想过尝试一次将嵌套的 if 和 vlookup 结合起来,但不要认为这会奏效。有没有办法得到想要的结果?如果没有公式解决方案,可以改用 VBA 宏吗?

标签: excelvbaexcel-formula

解决方案


使用您提供的示例数据,在 Sheet1 的单元格 K2 上,使用此公式并复制下来:

=INDEX(Sheet2!$B:$C,MATCH(I2,Sheet2!$A:$A,0),MATCH(J2,Sheet2!$B$1:$C$1,0))

推荐阅读