动态列索引作为参数

时间:2016-12-01 13:36:53

标签: excel

首先,我知道我可以用一些VBA做到这一点,但我不想那样做。 一直在搜索网络,但尚未找到解决方案。

所以,在Excel中,我使用VLookup函数(我认为,excel不是英文版),如下所示:

=LETARAD("key";A2:E65;5;0)

这很有效。

现在我想要的是根据workdate-function返回的内容使columnpart动态化。像这样:

=LETARAD("key";ColumnIndex(WorkDay("2016-11-30")*7)2:ColumnIndex(WorkDay("2016-11-30")*7)65;5;0)

虽然我无法做到这一点。 任何人都有任何吸烟? :)

解决方案更新:

这是我的解决方案的简化版本。 假设我有以下的excelsheet:

<table border="1">
    <tr><td></td><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td></tr>
    <tr><td>1</td><td>Keys1</td><td>Val</td><td></td><td>Keys2</td><td>Val</td></tr>
    <tr><td>2</td><td>1a</td><td>-5</td><td></td><td>2a</td><td>-3</td></tr>
    <tr><td>3</td><td>1b</td><td>-16</td><td></td><td>2b</td><td>82</td></tr>
    <tr><td>4</td><td>1b</td><td>-19</td><td></td><td>2c</td><td>18</td></tr>
</table>

使用以下功能,我可以检索我想要的值。

=VLOOKUP("key";INDEX(A2:E4;1;1+((WEEKDAY("2016-11-28")-1)*3)):INDEX(A2:E4;3;2+((WEEKDAY("2016-11-28")-1)*3));2;0)

其中键和工作日当然是动态的,每个工作日都有一定数量的键。工作表仅显示2天。 THX!

1 个答案:

答案 0 :(得分:1)

在英语中,您可以使用INDEX函数引用单个列,所以

=INDEX(A1:C100,,3)

参考C1:C100

因此,这样的事情会起作用:

=VLOOKUP("Key",INDEX(A1:C100,,3),5,0)

要每次更改此列,您只需要制作3动态

注意:您需要在此示例中将,更改为;