从项目,任务和日期表中创建信息列

时间:2018-09-07 16:14:55

标签: google-sheets excel-formula pivot-table spreadsheet

我在电子表格中有大量项目,这些项目具有与之相关的不同任务。每个项目都是一行,不同的任务是列。对于每个项目和任务,都有一个必须执行任务的日期。 (如果条目为空,则不必对该项目执行任务。)

一个示例电子表格在这里: https://docs.google.com/spreadsheets/d/1jzla_gMw_soVqW7OR3dSsT7Sd9zDYu-oSpdm5HeOzEs/edit?usp=sharing

是否可以将表转换为单个列表,其中包含日期,项目和任务(列表条目按其日期排序)?行/列将随时间添加。

String n1 = o1.name.toLowerCase();
String n2 = o2.name.toLowerCase();
// Both startsWith / both endsWith
if ((n1.startsWith(query) && n2.startsWith(query))
||  (n1.endsWith(query) && n2.endsWith(query))) {
    return Integer.compare(n1.length(), n2.length());
}
// Only one startsWith
if (n1.startsWith(query)) {
    return -1;
}
if (n2.startsWith(query)) {
    return 1;
}
// only one endsWith
if (n1.endsWith(query)) {
    return 1;
}
if (n2.endsWith(query)) {
    return -1;
}

2 个答案:

答案 0 :(得分:2)

用数据库术语来说,您要执行的操作称为规范化。您可以使用一对ARRAYFORMULAS来做到这一点,就像这样:

首先构建垂直(B5:B7)和水平(C4:E4)轴值的所有可能组合的列表,然后放入A10,例如

=arrayformula(
  split(
    transpose(
      split(
        concatenate(
          arrayformula(
            unique(filter(B5:B7, not(isblank(B5:B7)))) & "|" &
            unique(filter(C4:E4, not(isblank(C4:E4)))) & "\"
          )
        ),
      "\")
    ),
    "|")
  )

使用维度值在表格中查找日期并将其放入C10

=arrayformula(
   text(vlookup(A10:A18, $B$4:$E$7, match(B10:B18, $C$4:$E$4, 0)+1, false), "MM/DD/YYYY")
)

enter image description here 注意:

  1. 实际上不需要转换为text(),但避免了格式化单元格的格式。如果您需要日期值作为日期,请删除文本,然后将结果列设置为日期格式。
  2. 要使其全部开放,只需将范围的一端保持开放(例如A10:A而不是A10:A18),但随后您必须稍微复杂化公式以照顾错误处理
  3. 如果您更喜欢脚本解决方案,则下面是一个(不太优雅的)示例说明如何完成该解决方案。 Normalize (reformat) cross-tab data for Tableau without using Excel
  4. 我将日期放在最后一列,而不是放在第一列,因为在非规范化表中习惯将日期放在第一位,而将值放在后面。颠倒顺序很简单。
  5. 1899年的日期当然是表格中的空白单元格。同样,我将错误处理留给读者练习:-)

答案 1 :(得分:1)

如果您希望日期,项目和任务位于单独的列中,请尝试

=ArrayFormula(sort(split(transpose(split(textjoin("¶",true,if(C5:E7="","",C5:E7&"|"&B5:B7&"|"&C4:E4)),"¶")),"|"),1,true))

我必须手动将第一列的格式设置为mm / dd / yy。可以使用TEXT函数将日期格式设置为字符串,作为公式的一部分,但之后就不能用于排序。您可以将原始(未格式化的)日期添加到单独的列中并对其进行排序,但这会使公式变得更加复杂。

enter image description here