我正在努力为我正在努力完成的这项任务创建正确的Excel公式。
Sheet 1中
Sheet 2中
表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)。
答案 0 :(得分:1)
你可以得到这个结果:
使用此公式(取自结果表中的单元格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(...)
最终在此区域搜索您的目标日期,并返回该区域第二列的值。