如何将工作流程中的数据重新组织为另一种Google表格中的另一种格式

时间:2019-03-25 19:11:56

标签: google-sheets

我与一个少数民族语言团队合作,该团队正在将圣经翻译成他们的语言。我正在构建Google表格文档来为我们的团队安排工作流程。

这是我为这个问题创建的简化示例: https://docs.google.com/spreadsheets/d/1ojW-2qh2wDuFbIeojp4zYNPg5mTHmlz8S2OXyufuTaw/edit?usp=sharing 它具有评论访问权限,并且可以根据需要进行复制以进行编辑。

这是主表的结构(“计划完成”):

-- Months are shown along the top
--Books of the Bible down the left
--The translation stage numbers for each book appear underneath 
  the month that they are scheduled. 

此工作表将经常更新。

我正在制作一张新表(“计划计时表”),该表显示相同的数据,但按时间顺序组织。它的结构:

--The months go down the left-hand side 
--Each book and the stage being worked on appears just to the right of the month

我遇到的困难是我不知道如何将数据从第一张纸上拉到第二张纸上,并按时间顺序显示数据。尽管我了解一些基本的编程理论,并且比普通的joe有更多的能力制作高级电子表格,但我实际上并不了解任何编程语言。

我已经广泛研究了使用数组,CONCATENATE(),MATCH(),INDEX(),VLOOKUP(),COUNTIF()甚至QUERY()的方法,但是如果这些是正确的工具,我不确定如何使用它们。

我从另一个模板中汲取了一些灵感,该模板在“日历视图”中精美地使用了QUERY()! https://docs.google.com/spreadsheets/d/1hT_MVbbQWclzDw9kBD6bVXIYFf4KZR8DRVZKKQusqeI/edit?usp=sharing

我还创建了一些中间工作表(例如“ Prep for Chrono”),这使我有所作为,但是我不知道他们是否有帮助,或者从那里做什么。

挑战之一是,在给定的月份内,我们将研究1-4本书,每本书都处于自己的阶段。

如果我需要合并单元格,看起来Q&A会有所帮助,但是我不确定它适合什么位置: How to import data from one sheet to "only one cell" in another sheet

我也研究了这些问题,但它们似乎是针对不同情况的: Reorganizing Google Sheets data dynamically Filter data from one sheet to another

我为“计划时间表”标签写了一些伪代码,但我不知道如何将其转换为有效的Google表格公式。

此伪代码将放置在“ Plan Chrono”中,并在每个月的每个书阶段创建一个新行,从而生成整个表格。也许使用QUERY()?

// Look for contents in the 'Prep for Chrono' tab. For each cell with content, 
// 1. start a new row. 
// 2. in column B, print the year         that corresponds with that cell
// 3. in column C, print the month        that corresponds with that cell
// 4. in column D, print the quarter      that corresponds with that cell
// 5. in column E, print the project year that corresponds with that cell
// 6. in column F, print the book         that corresponds with that cell 
// 7. in column G, print the stage        that corresponds with that cell
in 'Prep for Chrono'!N8:N10'
  for each cell where ISBLANK=false
      start a new row
      in [current row]B print [same column as cell]6
      in [current row]C print [same column as cell]7
      in [current row]D print [same column as cell]5
      in [current row]E print [same column as cell]4        
      in [current row]F print B[same row as cell]
      in [current row]G print [the content of that cell]

另一种方法是每月仅排一行,并将书籍和阶段组合到单个单元格中:

“图书”列:

// Look for contents in the 'Prep for Chrono' tab. For each cell with content, 
// print the name of the book that corresponds with that cell. 
// Add a return character after printing each cell with content, 
// except after the last one.
in 'Prep for Chrono'!N8:N10'
  for each cell where ISBLANK=false
      print B[same row as cell]&if(not_last_valid_cell(),[return character],"")

“阶段”列

// Look for contents in the 'Prep for Chrono' tab. For each cell with content, 
// print that cell.
// Add a return character after printing each cell with content, 
// except after the last one.
in 'Prep for Chrono'!N8:N10'
  for each cell where ISBLANK=false
      print the text in that cell&if(not_last_valid_cell(),[return character],"")

在'Plan Chrono'!I6:N68中,我提供了两个手动编码的示例,它们显示了我希望图表的外观。我希望自动页面显示在其左侧突出显示的部分。

我感谢所有读过本文的人,尤其是感谢有一些想法的人。

1 个答案:

答案 0 :(得分:1)

输入到F8的公式可以为您解决问题:

=concatenate(arrayformula(if('Plan Complete'!N8:N67>0, 'Plan Complete'!B8:B67&": "&char(10), "")))

G9的类似公式是:

=concatenate(arrayformula(if('Plan Complete'!N8:N67>0, 'Prep for Chrono'!N8:N67&char(10), "")))

除了N-> O,O-> P等之外,以下各行将相同。

为了更广泛地帮助您格式化这样的系统,我认为您遇到的问题是,您在任何地方都没有数据表。如果我正尝试通过Sheets模拟数据库,那么我将首先创建一个包含所有潜在字段[Book],[Expected_Completion_Date],[Languages]等的一两个表,然后使用查询函数来操作该表整个电子表格中的数据源。从数据存储/输入表单和可视化/数据界面的角度考虑它。

我希望能有所帮助。