我在工作表dataset
中有一个包含不匹配日期的时间序列:
我想使用VLOOKUP
返回每个日期的价格,或ERROR
如果价格不可用,请按照以下方式:
我想在第一行使用以下公式:
=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:B
,C:D
,D:E
,F:G
等。有没有办法将此公式扩展到到1000列?
答案 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中将它拖过来。