我知道这可能不是提出纯粹问题的最佳地点,但是。我有一个包含以下标题的表:数字,日期,名称。在另一个文件中,我需要将数字与名称相关联。它并不总是以相同的顺序,因此VLOOKUP公式。以下是数据。
1 15-Nov Allen 15-Nov
10 15-Nov Allen 15-Nov
19 15-Nov Allen 15-Nov
6 5-Mar Avalon 5-Mar
15 5-Mar Avalon 5-Mar
24 5-Mar Avalon 5-Mar
9 15-Nov Burg 15-Nov
18 15-Nov Burg 15-Nov
27 15-Nov Burg 15-Nov
8 1-Sep Fischer 1-Sep
17 1-Sep Fischer 1-Sep
26 1-Sep Fischer 1-Sep
3 14-Oct Kiser 14-Oct
12 14-Oct Kiser 14-Oct
21 14-Oct Kiser 14-Oct
2 15-Oct Remmert 15-Oct
11 15-Oct Remmert 15-Oct
20 15-Oct Remmert 15-Oct
4 1-Sep Roos 1-Sep
13 1-Sep Roos 1-Sep
22 1-Sep Roos 1-Sep
7 6-Feb Tomo 6-Feb
16 6-Feb Tomo 6-Feb
25 6-Feb Tomo 6-Feb
5 1-Jan Wash 1-Jan
14 1-Jan Wash 1-Jan
23 1-Jan Wash 1-Jan
所以让我们假设它的标题是A,B,C,D列。所以在新文件中为了从数字中获取名称我使用了公式:
=VLOOKUP(A1,[Workbook1]Sheet1!$A$1:$D$27,3,FALSE)
Workbook1和Sheet1是数据的位置。接下来,我需要通过将其链接到名称来从文件中获取日期。我知道我可以将它与数字联系起来,但它是一个工作的东西,它们的安排方式是从最旧到最新的不同日期,不像这一样。在我看来,excel中的Date函数非常愚蠢。所以我使用了公式
=VLOOKUP(B1,[Workbook1]Sheet1!$A$1:$D$27,1,FALSE)
并通过将4替换为4来迭代它。它一直返回N / A.即使我将Date的格式更改为General,它仍然不会返回任何内容。我不知道我在这里做错了什么。
答案 0 :(得分:1)
我认为B1持有该人的姓名。在这种情况下,您需要调整查找表的范围,以便它从名称中的列开始,即
=VLOOKUP(B1,[Workbook1]Sheet1!$C$1:$D$27,2,FALSE)
已编辑:将列更改为2以获取日期
答案 1 :(得分:1)
VLOOKUP语法:
VLOOKUP( lookup_value,table_array,col_index_num,(可选)[range_lookup] )
VLOOKUP function将始终在 table_array 的第一列中查找 lookup_value 。然后,它尝试返回 table_array 中相应行的 col_index_num 中的值。 range_lookup 告诉VLOOKUP是要查找精确匹配还是近似匹配。在您的情况下,您将寻找完全匹配。
VLOOKUP决不会在列的左侧的 table_array 中返回一个值,该值与 lookup_value 相匹配。 lookup_value 总是在第一列中查找,VLOOKUP在右侧的列中返回一个值。
根据A栏中的ID号查找名称的公式适用于此。
=VLOOKUP(A1, [Workbook1]Sheet1!$A$1:$D$27, 3, FALSE)
在A1中使用 8 ,上述公式在B1中返回 Fischer 。
当您要返回日期时,VLOOKUP将适用于Sheet1列D中名称右侧的那个,但它不能从Sheet1的列B返回基于 lookup_value 的日期名字。您需要INDEX / MATCH函数对。此外,使用INDEX / MATCH检索与名称匹配的第二个和第三个日期集比VLOOKUP更容易。
INDEX和MATCH语法:
INDEX( array,row_num,column_num )
MATCH( lookup_value,lookup_array,(可选)[match_type] )
如果您希望使用刚从Sheet1的C列中检索到的名称从Sheet1的B列返回日期,则必须使用INDEX / MATCH对。由于我们将这个用于一个日期,因此可以将它用于另一个日期,但严格来说,VLOOKUP 可以用于此。
在C1和D1中使用这两个公式。
=INDEX([Workbook1]Sheet1!B:B, MATCH(B1, [Workbook1]Sheet1!C:C, 0))
=INDEX([Workbook1]Sheet1!D:D, MATCH(B1, [Workbook1]Sheet1!C:C, 0))
将单元格格式化为 d-mmm 的自定义数字格式。您的结果应与以下内容类似。
如果您想要返回Sheet1中与B列中的名称匹配的第二个和第三个日期,请将目标工作表的C1和D1更改为使用SMALL function togewther与ROW function的公式并COUNTIF function生成其他日期。
对B1中的公式进行微调,以便可以填充,然后为C1和D1提供接下来的两个公式。
=VLOOKUP(A$1, [Workbook1]Sheet1!$A$1:$D$27, 3, FALSE)
=IFERROR(INDEX([Workbook1]Sheet1!B$1:B$999, SMALL(INDEX(ROW($1:$999)+([Workbook1]Sheet1!C$1:C$999<>B$1)*1E+99, , ), COUNTIF(B$1:B1, B1))), "")
=IFERROR(INDEX([Workbook1]Sheet1!B$1:B$999, SMALL(INDEX(ROW($1:$999)+([Workbook1]Sheet1!C$1:C$999<>B$1)*1E+99, , ), COUNTIF(B$1:B1, B1))), "")
填充B1:D1向下以捕获Sheet1中与原始ID查找返回的名称匹配的所有可能日期。您的结果应该如下,
您可能会注意到我在Sheet1上对相同日期进行了排序以演示该方法。当您用完值时,IFERROR function用于显示空字符串(例如“”)而不是错误消息(如上面示例图像中的C4和D4)。
总之,使用VLOOKUP function将值返回到所寻求的值的右侧;使用INDEX / MATCH函数对从匹配列的任意一侧检索值。
答案 2 :(得分:0)
您需要使用以下格式格式化日期:
这是我为解决问题所做的总体工作。