每隔一列都有VLOOKUP()

时间:2016-05-20 17:27:12

标签: excel vlookup

我在工作表dataset中有一个包含不匹配日期的时间序列:

dataset

我想使用VLOOKUP返回每个日期的价格,或ERROR如果价格不可用,请按照以下方式:

output

我想在第一行使用以下公式:

=IFERROR(VLOOKUP($A1,dataset!A:B,2,FALSE), "ERROR")
=IFERROR(VLOOKUP($A1,dataset!C:D,2,FALSE), "ERROR")
=IFERROR(VLOOKUP($A1,dataset!E:F,2,FALSE), "ERROR")

我在上面的示例中只显示了3列,但在实际工作表中,我有超过1000列。将第一个公式拖到右边实际上给出了:

=IFERROR(VLOOKUP($A1,dataset!A:B,2,FALSE), "ERROR")
=IFERROR(VLOOKUP($A1,dataset!B:C,2,FALSE), "ERROR")
=IFERROR(VLOOKUP($A1,dataset!C:D,2,FALSE), "ERROR")

这不是我想要的,我想要的列是A:BC:DD:EF:G等。有没有办法将此公式扩展到到1000列?

1 个答案:

答案 0 :(得分:1)

我可能会过度思考但这应该有效:

=IFERROR(VLOOKUP($A1,INDEX(datasheet!$A:$AAZ,0,1+(COLUMN(A:A)-1)*2):INDEX(datasheet!A:AAZ,0,2+(COLUMN(A:A)-1)*2),2,FALSE),"ERROR")

将其放在数据输出的左上角并向上和向下拖动。对于拖动的每一列,它应该每两列递增一次。

您可能需要将$AAZ更改为数据集的最后一列。

这表明该公式的基础有效:

我使用了公式:

=VLOOKUP(1,INDEX($A:$AAZ,0,1+(COLUMN(A:A)-1)*2):INDEX(A:AAZ,0,2+(COLUMN(A:A)-1)*2),2,FALSE)

在I2中将它拖过来。

enter image description here