2014-03-07 194 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)