我有一份列表,其中一列包含人员姓名,另一列包含其公司名称。每列顶部都有一个标签,即 A 列为“姓名”,B 列为“公司”。
我想要使用的程序的工作方式是从一列中的主列表中读取数据,然后使用第二列区分第一列中包含的数据类型,如下所示:
最终目标是自动从外部来源提取这些数据,这些数据存储在一个选项卡中。然后会有一个包含此主列表的选项卡,其中一列包含人员姓名和各种公司名称,第二列紧挨着第一列的数据类型(即“人员”或“公司”,如上图所示)。
到目前为止,我已经能够使用 Sheet 的“QUERY”函数填充第二个选项卡中的各个列,
`QUERY('Importer'!A2:A)`
每次从外部源更新其他选项卡时,这使得该列能够很好地更新,问题是因为我事先不知道引用的列会有多长,所以我无法添加第二个“查询”函数来从其下方的另一列中提取数据。
任何关于如何解决这个问题的建议都将不胜感激。谢谢!
答案1
您可以尝试:
公式C1
:
=ARRAYFORMULA(SORT(SPLIT(FLATTEN(QUERY({IF(A2:A="",,A2:A&"|Name"),IF(B2:B="",,B2:B&"|Company")},"where Col1 is not null")),"|"),2,0,1,1))
一点点解释(从内到外):
IF()
- 使用构造在二维数组内创建连接的字符串{1,2}
。QUERY()
- 从数组中删除所有空行。FLATTEN()
- 将结果数组展平为一列SPLIT()
- 将连接的值重新转换为二维数组。SORT()
- 对返回的数组按两列进行排序以获得想要的结果。ARRAYFORMULA()
- 所有内容都需要包装为数组输入公式。
编辑
对于那些想要自己处理数据的人来说:
姓名 | 公司 |
---|---|
阿什·金塔纳 | A公司 |
奥布里·威肯斯 | B公司 |
卡梅伦·托斯 | C 公司 |
哈雷·霍尔布鲁克 | D 公司 |
雅克·阿尔金特 | E 公司 |
杰米·齐亚 | F 公司 |
杰西·帕特尔 | G 公司 |
莱恩·伯格曼 | H公司 |
麦迪逊陶布 | 公司一 |
特洛伊·伊斯顿 | J公司 |