我正在尝试在Google表格中合并两个表格。
第一张纸包含一个简单的类似于以下名称的列表:
+--------+
| Name |
+--------+
| Bob |
| Vivian |
| Fred |
+--------+
第二张纸包含类似于以下内容的任务列表:
+------------+---------+
| Task | Task ID |
+------------+---------+
| Do Dishes | 1 |
| Vacuum | 2 |
| Do laundry | 3 |
+------------+---------+
我想将这些结合起来,这样我就可以在单独的行中为每个名称获得带有这些任务的工作表:
+--------+------------+---------+
| Name | Task | Task ID |
+--------+------------+---------+
| Bob | Do Dishes | 1 |
| Bob | Vacuum | 2 |
| Bob | Do laundry | 3 |
| Vivian | Do Dishes | 1 |
| Vivian | Vacuum | 2 |
| Vivian | Do laundry | 3 |
| Fred | Do Dishes | 1 |
| Fred | Vacuum | 2 |
| Fred | Do laundry | 3 |
+--------+------------+---------+
实际数据集要大得多,因此我需要一个公式来动态地执行此操作。我曾尝试修改QUERY和VLOOKUP,但我真的一无所获。
下面是共享表,具有与上面相同的伪数据。任何帮助将不胜感激!
https://docs.google.com/spreadsheets/d/1yosNoGj-PKf2Yua7-3mN3oCxIklr3IaBDojUgLunjWg/edit?usp=sharing
答案 0 :(得分:0)
这是使用一点数学的一种方法。在所需的工作表上,将标题放置在第1行中(如果您想花哨的话,可以使它们的公式=与其他工作表中的标题相同,以便在重命名时保持一致)。我假设名称在A列中。
在所需表的A2中,放入=index(Names!A:A,2+QUOTIENT(row()-2,3))
,然后将其向下拖动。每个名称将执行3次。 [如果最终在任务表上有更多列,请增加3列或使其起作用]。
现在在B2中放置=index(Tasks!A:A,2+mod(1+row(),3))
并将其向右拖动到C列中,并根据需要向下拖动(对于两个列)。这将循环浏览每个用户的条目。
我喜欢这个问题有多清楚。
编辑:以下是适用于处理不同数量任务的相同公式。
=index(Names!A:A,2+QUOTIENT(row()-2,countA(Tasks!A:A)-1))
和
=index(Tasks!A:A,2+mod(countA(Tasks!A:A)-3+row(),countA(Tasks!A:A)-1))
如果您希望它变得更加透明,可以使用countA(Tasks!A$2:A)
代替countA(Tasks!A:A)-1)
,并将-3更改为-2(其中2是数据开始的行, -1消失了,因为标头“任务”不算作任务)。