Excel中的大量查找

时间:2018-02-17 15:50:18

标签: excel excel-formula

我正在努力为我正在努力完成的这项任务创建正确的Excel公式。

Sheet 1中 Sheet1

Sheet 2中 Sheet2

表Sheet 3 Sheet3

图3应该说明我的问题的简化版本。正如你所看到的那样,问题在于YARA的股票价格应该从30-04-2004开始,它开始于31-01-2002,就像爱立信一样。

我有600个股票价格如图2所示。我想列出它们如图1所示,日期是水平的,一个共同的行有所有日期。例如:爱立信LM-B SHS的价格在图2 B7:B199中垂直列出。我希望它在B5中显示,然后相应地水平显示。

我已经尝试了几个索引匹配功能但似乎无法正确使用它,因为我有如图2所示的这个巨大的数组,我想从600个不同的列中提取不同的股票价格。我也试过使用这样的函数,但没有任何运气:

=VLOOKUP(B$2;'Data'!$4:$199;MATCH(Indeks!$A3;'Data'!$5:$5;0)+1;FALSE).

Indeks和Data只是指我的工作表(sheetname)。

1 个答案:

答案 0 :(得分:1)

假设以下源表名为 source source table

你可以得到这个结果:

result table

使用此公式(取自结果表中的单元格B1

=VLOOKUP(B$1;INDIRECT(ADDRESS(1;MATCH($A2;source!$A$1:$IV$1;0);1;1;"source")&":"&ADDRESS(999;MATCH($A2;source!$A$1:$IV$1;0)+1));2;0)

从内到外逐步解释

MATCH ($A2;source!$A$1:$IV$1;0)返回整数列号,其中$A2,即股票的名称,在源中找到

ADDRESS (1;MATCH(...);1;1;"source")返回一个地址字符串,如"source!$B$1",即查找区域的左上角。

ADDRESS(999;MATCH(...)+1)同样返回右下角。这个表名很明显,例如"$C$999"

ADRESS(...)&":"&ADDRESS(...)将这两个地址连接到"source!$B$1:$C$999"

INDIRECT(...)将字符串转换为该区域的引用。

VLOOKUP(...)最终在此区域搜索您的目标日期,并返回该区域第二列的值。