2014-03-07 192 views
0

我正在生成一個報告,但我用一個值來從報告中找到一個值。我試圖做一個Vlookup和一個Hlookup的組合,但我無法讓它工作。如何返回偏移值--Vlookup

所以我需要拉即2列返回到點登錄值的值,然後引用該值acording到的值在第一列(1234569)

任何幫助是非常apreciated

1234569 | John | Smith | 
     |   |   | 
From |  To | Dur. | Activity 
9:00 | 9:01 | 0:01 | Open 
9:01 | 9:14 | 0:13 | Signon 
+0

您的數據是否始終格式一致?具體來說,'1234569'總是4行,'Signon'左邊3列? –

+0

有時沒有「登錄」值進一步下降或反之亦然 – David

回答

0

所以,你要像=sign_off_time(1234569)返回9:14?這種事情很簡單。但確切的實現將取決於您想要讀取這些數據的位置以及您的工作表結構的其餘部分。

基本上,我認爲你遇到的基本問題是VLOOKUP()需要索引位於查找數組的第一列,然後才能找到索引右側的值。解決方案是使用INDEX()MATCH()的組合代替VLOOKUP()Here's a nice write up of how to use INDEX/MATCH and a comparison of this with VLOOKUP.

編輯:好的,你準備好了嗎?在這裏,我們去...如果工作表Sheet1看起來是這樣的:

1234569 |John Smith 

From To Dur. Activity 
9:00 9:01 0:01 Open 
8:55 10:15 1:20 Activity3 
6:55 8:19 1:24 Activity4 
9:01 9:14 0:13 Signon 

4657915 Jane Doe 

From To Dur. Activity 
8:55 10:15 1:20 Open 
6:55 16:33 9:38 Activity4 
11:55 15:42 3:47 Signon 

8461224 Bob Dulluth 
(etc) 

,那麼這將在Sheet2中工作(或任何地方,真的)。它找到查找ID的行(例如,1234569),然後在下面找到'Signon'的第一個匹配項(不管下面有多遠),然後查找該行的第二列(註銷時間)。這休息如果一個人的記錄沒有「登錄」活動,它會發現下一個人的「登錄」。

=INDEX(Sheet1!C2,MATCH("Signon",INDIRECT("Sheet1!R"&TEXT(MATCH(Sheet2!RC1,Sheet1!C1,0),"@")&"C4:R"&TEXT(ROWS(C3),"@")&"C4",FALSE),0)+MATCH(Sheet2!RC1,Sheet1!C1,0)-1)

式中的參考Sheet2!RC1爲查找ID,因此根據需要更改。

+0

其餘的數據是在類似的問題上形成的,但是我之後的值並不總是與我需要的值在同一行中參考,但讓我看看鏈接,謝謝! – David

+0

這是完美的〜! – David

0

(測試Excel 2010中)

=INDEX(OFFSET(INDEX($A:$D,MATCH($F$2,$A:$A,0),0),0,0,5,4),MATCH("Signon",$D:$D,0),MATCH("To",$3:$3,0)) 

假設:

  • 列表項數(1234569)在列A
  • $ F $ 2包含的記錄數,你想搜索
  • 「登錄」是您正在搜索的「活動」行,並在列D中找到
  • 「收件人」是列y你在尋找。
    • 在3列標題:3在整個表保持不變
  • 每個「記錄」是5行4列寬

從這裏走出去的高,你應該能夠破譯公式並根據需要進行調整。 VLOOKUP/HLOOKUP相當有限...通常更好的是花一點額外時間來使用INDEX/MATCH來查找工作表中其他地方的數據。

希望這會有所幫助!

0

更大的問題是,您正在使用查找功能,如MATCH INDEX,VLOOKUP和報表不在表格中。

如果你必須添加一些額外的列旁邊的原始報告的能力,我建議你嘗試這樣的事:

enter image description here

的關鍵是,你需要一些方法來標誌新的記錄'在你的原始報告中。我參加了一個猜測,唯一的一次「從」出現在A列中是表明一個新的記錄,但是你可能需要不同的公式來獲取ID爲列F

那麼你的公式變得簡單=VLOOKUP("1234569Signon",$G:$H,2,false)