我想看看是否有一个公式可以从两个使用相似标识符的不同数组中输出一个数组。
有人有什么建议吗?
- 提供的数组1*
| ID|账户|
| - -----|- -----|
| 一个|一百|
| 一个|一百零一|
| 一个|一百零二|
| B|一百零五|
- 提供的阵列2*
| 使用者|ID|
| - -----|- -----|
| U1|一个|
| U1| B|
| U2|一个|
- 所需阵列3输出 *
| 使用者|账户|
| - -----|- -----|
| U1|一百|
| U1|一百零一|
| U1|一百零二|
| U1|一百零五|
| U2|一百|
| U2|一百零一|
| U2|一百零二|
enter image description here
我已经尝试过使用helper列和各种过滤器方法。我能够得到部分,但无法生成像“数组3”这样的输出。
任何帮助是非常感谢!
4条答案
按热度按时间7qhs6swi1#
从2个列表创建列表
ndasle7k2#
使用Power Query
Array1
和Array2
。Array1
Data => Get&Transform => from Table/Range
Home => Advanced Editor
Applied Steps
以了解算法ws51t4hk3#
可能有更简单的方法或更有说服力的方法,但是你也可以使用函数来尝试。
LET()TAKE()DROP()REDUCE()LAMBDA()VSTACK()TOROW()FILTER()TOCOL()TEXTBEFORE()
TEXTAFTER()HSTACK()
·单元格
G1
中使用的公式请注意,根据OP提供的阵列,单元格
A2
中使用了一个并给出了在单元格
D2
中使用的阵列二bihw5rsg4#
我不是100%的逻辑生成的基础上提供的信息的问题,但如果这是我认为你可以使用以下的输出。此解决方案不需要通常效率较低的Lambda Helper Function:
下面是输出:
我们有两个输入范围:
AB
、DE
(名称是指范围的列字母),其余的名称是使用TAKE
函数从中推导出来的,以提取特定的列。名称
x
是一个mxn
数组,其中m
是A
的行数,n
是E
的行数,其中元素i,j
表示Ai = Ej
的比较,因此它返回相应的B
值,如果它们相等,否则NA
(显然它假设NA
不是有效的帐号)。我们稍后通过TOCOL
使用NA
来删除这些值。下面是x
的输出:注意:如果我们能够将前一个矩阵按列连接在一列中,然后删除
NA
值,这就是我们要查找的帐户的输出。名称
ac
(accounts)使用TOCOL
按列(第三个输入参数中的1
)连接x
矩阵,删除NA
值(第二个输入参数中的2
)。对于
user
,我们应用类似的逻辑,通过TOROW
将D
名称作为单行。它确保按给定行的列进行比较。最后一步是使用VSTACK
将header添加到预期输出:HSTACK(user, ac)
.