将两张纸合并为 Google 张

Combine two sheets in Google sheets

我正在尝试将两个 sheet 组合成一个 Google Sheet。

第一个 sheet 包含一个简单的名称列表,类似于:

+--------+  
|  Name  |  
+--------+  
| Bob    |  
| Vivian |  
| Fred   |  
+--------+

第二个 sheet 包含类似于以下的任务列表:

+------------+---------+  
|    Task    | Task ID |  
+------------+---------+  
| Do Dishes  |       1 |  
| Vacuum     |       2 |  
| Do laundry |       3 |  
+------------+---------+  

我想将这些组合起来,这样我就可以得到一个 sheet,其中每个名称的任务都在单独的行中:

+--------+------------+---------+  
|  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,但我真的一无所获。

下面是共享的 sheet,其中包含与上面相同的虚拟数据。任何帮助将不胜感激!

https://docs.google.com/spreadsheets/d/1yosNoGj-PKf2Yua7-3mN3oCxIklr3IaBDojUgLunjWg/edit?usp=sharing

这是一种方法,需要一点数学知识。在你想要的 sheet 上,将你的 header 放在第 1 行(如果你想花哨的话,你可以将它们设为公式 = 其他 sheet 的标题,这样你如果重命名,请保持一致)。我假设名字在 A 列中。 在你想要的sheet的A2,放=index(Names!A:A,2+QUOTIENT(row()-2,3)),然后往下拉。这将对每个名称执行 3 次。 [如果您最终在任务 sheet 上有更多列,请增加 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:A) 代替 countA(Tasks!A:A)-1),并将 -3 更改为 -2(其中 2 是数据所在的行start 并且 -1 消失了,因为 header "Task" 不算作任务)。