簡體   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