繁体   English   中英

在使用 Web 外部数据时使用 vlookup

[英]Using vlookup while using web external data

下午好,

我正在从 gasbuddy 提取燃料数据库并尝试使用VLOOKUP功能来获取地址、价格和上次更新时间。 但是,我得到的只是#N/A(值不可用)结果。 我的代码如下:

=VLOOKUP(
  N5,
  GasPriceSearch.aspx?typ_adv_fuel_limit_36,
  COLUMN(B5),
  FALSE)

我尝试将此信息转换为表格并且公式有效,但我遇到了报告新燃料价格的问题并且它弄乱了整个表格。 我宁愿从没有表格的初始数据开始。

在此处输入图像描述

谢谢你,杰西

有几种方法可以实现这一点。 但是,根据您的数据结构,常规VLOOKUP将不起作用,因为VLOOKUP仅搜索查找值(即地址)的右侧,例如,价格在其左侧。 因此,一种可能性是重组您的数据,以便您获得地址、价格、更新等信息。 这也将避免价格与查找值位于不同行的问题。

使用此数据结构的另一种方法是使用INDEX函数:

=INDEX(array, row_num, [column_num])

您的数组反映了您要查找的数据存储范围; 在您的情况下,仅考虑价格和站A:B 由于您隐藏了一些列,因此很难查看此数据表中的其他内容。 但只需根据您对数据的需求进行调整。

行号可以硬编码。 但是,由于您要查找特定值(即地址),您可以使用MATCH函数:

=MATCH(lookup_value, lookup_array, [match_type])

在此步骤中,您要从 B 列的 N 列中查找您的地址,其中列出了所有车站。 您还需要指定要返回的列。 同样,您可以对其进行硬编码或使用MATCH函数。 例如,您可以使用match_type指定您只需要完全匹配,即match_type = 0

要将值“更新”返回到地址的左侧,您的公式如下所示:

=INDEX($A:$B,MATCH(N6,$B:$B,0),1)

要返回地址本身(这几乎没有用,因为您已经在 N 列中拥有它),请使用以下公式,将列值从 1 调整为 2:

=INDEX($A:$B,MATCH(N6,$B:$B,0),2)

最后,您的价格信息在地址上方一行,您需要相应地调整行数 -1。 也就是说,例如,如果您的地址是 4123 Town [...],您希望返回第 6 行的第 1 列而不是第 7 行:

=INDEX($A:$B,MATCH(N6,$B:$B,0)-1,1)

另一种策略是使用XLOOKUP函数(仅在较新版本的 Excel 中可用),它允许您查找查找值左侧的值。 但同样使用这种策略,您将不得不处理行差异问题。 在这种情况下, OFFSET函数可能很有用,但它并不比INDEX函数更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM