快速提问,我不知道这是否只能在Excel中完成,或者我是否必须将Access合并到此设置中。我想设置一个动态列表,为基于部门的员工生成子任务。每个部门获得4个通用子任务,然后他们有几个部门特定的子任务。我有动态表格直接拉入excel。我列出了子任务。我想过尝试做一个包含行数的数组。我希望能够输入员工ID,并通过vlookup将部门员工名称拉出来,并以列表格式复制该信息,以显示要上载的子任务。
示例:我输入10005它返回Joe Dirt QA部门
然后在生成列表中,它将使用适当的子任务复制此条件,如下所示
10005 Joe Dirt 000 team Management
10005 Joe Dirt 010 development
10005 Joe Dirt 030 documentation
示例输出:
示例数据第1部分:
示例数据第2部分:
感谢您的帮助。
答案 0 :(得分:0)
正如您在问题中提到的那样,您想要:
“我希望能够输入员工ID并通过vlookup将其拉出来”
“然后在生成列表中,它将使用适当的子任务复制此条件,如下面的示例”
在不知道您的数据格式的情况下,您可以尝试这样的方式,在搜索表格式中使用此公式,例如下面发布的图片:
=IFERROR(MATCH([Your Lookup Value],INDIRECT([column]&[row of previous value found]+1&[end range]),0)+[row of previous value found],"")
此公式将Match
“自定义”范围内的查找值并返回其Row
,范围将通过从找到的前一个Row
开始直到结束范围来设置(":A1000"
)以下情况。
e.g.: from image =IFERROR(MATCH($G$3,INDIRECT("A"&G5+1&":A1000"),0)+G5,"")
上面会给你ROW()
找到你要找的值的地方,然后你可以简单地OFFSET()
你想要的返回值(知道行和列)。
=OFFSET($A$1,G6-1,1)
用于说明表格设置的图像。
在评论中提出编辑实施帮助:
首先,您需要设置要使用的Row
,在您的情况下参考将如下所示:
设置要使用的单元格具有Employee ID
的输入,并将公式指向正确的查找范围和输入单元格。
$N$16
- 这是您的输入单元格($
表示即使您拖动公式,单元格也将保持不变)
INDIRECT("K"&N18+1&":K1000")
- 这是您的查找范围,"K"
是列,&N18+1&
是前一个公式的结果加一,应指向上方的单元格(for第一个公式将N18
指向空单元格或将其删除),":K1000"
是您的范围的结尾,如果您想将其设置为更大或更小,则将数字从1000更改为{{1根据你的数据。
1 or 10000
- 再次指出上一个公式并添加+N18
,以便稍后我们可以Rows
工作。
Offset
示例:
请注意,此公式产生的数字与包含=IFERROR(MATCH($N$16,INDIRECT("K"&N18+1&":K1000"),0)+N18,"")
的{{1}}(我们正在搜索的值)匹配。
下一个Rows
您要返回的值:
10005
Offset
- 参考单元格,公式其余部分设置的距离相对于此单元格。
=Offset([Reference],[Distance from Ref in Rows],[Distance from Ref in Columns])
- 与$A$1
中的AA6-1
的距离,$A$1
公式(Rows
数字)产生的值减1,因为起始参考( Lookup
)是一个,所以它会被一个人击中。 Row
我们正在寻找第4行(上图中的图片)。
$A$1
- 与[starting row(1) + value row(4) = 5]
中的10
的距离,与行$A$1
类似,是字母表的第11个字母,因此我们需要Columns
来提供从起始列K
更正列。
11 - 1
A
对于e.g.: If you need column Q then 17-1=16, you put 16 in the column part of the offset
,您似乎从其他工作表中获取数据,因此您可以在=OFFSET($A$1,AA6-1,10)
的回复周围添加Subtask
。
VLOOKUP
OFFSET
是要查找的值,=VLOOKUP("*"&OFFSET($A$1,AA6-1,23)&"*",Sheet1!C:C,1,FALSE)
周围的"*"&OFFSET($A$1,AA6-1,23)&"*
表示值在值之前或之后可能有不同的文字,"*"
是您的范围在不同的工作表上,OFFSET
是列返回值,Sheet1!C:C
正在寻找完全匹配
简化编辑子任务:
您可能需要更改某些值,请参阅图片以更好地了解它们的位置。
1
从内到外的公式细分:
示例False
=OFFSET(Sheet1!$A$1,MATCH(VLOOKUP(AB6,K:X,14,FALSE),Sheet2!B:B,0)+COUNTIF($AD$5:AD5,"<>")-1,2)
- AB6
。
Employee ID
- 此Result e.g: 10004
会找到VLOOKUP(AB6,K:X,14,FALSE)
的{{1}}并返回VLOOKUP
部门Employee ID
。 X
Employee ID
- 这会在Result e.g: "Software"
范围MATCH("Software",Sheet1!B:B,0)
中找到"Software"
的第一个匹配项。将工作表和范围更改为表Sheet1!
所在的位置。 B:B
Classification/Department
- 这指向上方的单元格并计算是否与空Result e.g: 11
不同(公式上的COUNTIF($AD$5:AD5,"<>")
为""
),这是一种方法递增一个计数器,其他方法是键入一个数字(在后续公式中手动递增)或指向/指定包含数字增量的单元格("<>"
)。向下拖动公式时,这将提供Excel quirk
,+A1
,0
,1
等。2
3
- 将从Result e.g: 0 for the first iteration
单元格开始(OFFSET(Sheet1!$A$1,11+0-1,2)
是带表格的工作表)并将数字Sheet1!$A$1
添加到行和{{1} }}到列,这将导致Sheet1
= 11+0-1
和2
= A+2
,C
是值为1 + 11+0-1
的单元格,因此返回该值。 11
。
P.S。:要填充C11
,您可以使用简单010 Feature Design, ...
之前发布的公式,因为我认为员工可以拥有多个Result e.g: 010 Feature Design, ...
。