我正试图在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
1 回答
这是一种方法,使用一点点数学 . 在你想要的表格上,把你的 Headers 放在第1行(如果你想要得到它,你可以使它们成为公式=来自其他表格的 Headers ,这样你就可以保持一致,如果你重命名) . 我假设名字在A列中 . 在你想要的表格的A2中,放入
=index(Names!A:A,2+QUOTIENT(row()-2,3))
,然后将其向下拖动 . 这将每个名字做3次 . [如果您在任务单上有更多列,请增加3,或使其成为一个功能] . 现在在B2处=index(Tasks!A:A,2+mod(1+row(),3))
然后将其拖到C列中并向下拖动(对于两列) . 这将循环通过每个用户的条目 . 我喜欢这个问题有多清楚 .编辑:以下是适用于处理不同数量任务的相同公式 .
和
如果你想让它变得更加透明,你可以使用
countA(Tasks!A$2:A)
来代替countA(Tasks!A:A)-1)
,并将-3更改为-2(其中2是数据开始的行,-1则消失,因为 Headers "Task"不是算作任务) .