我有几个股票的股票价格清单。由于周末,假期和其他原因,一些价值观缺失。
差距不一致。有些是两天,有些不止于此。
我想用最后的已知值填补空白,但不是在列表的末尾。
我已尝试在Excel中测试下面的几个单元格,如果它现在为空,请填写。问题在于,由于差距的不一致,改变所有案例的功能是一项繁琐的工作。
有没有办法测试列表的结尾?
更新 - 添加了截图。
查看此截图。我想填补蓝点的位置。红点位于列表的末尾,我不想填充这些单元格。
我正在寻找一种方法来检测列表的结尾,并在检测到结束时停止填充。
答案 0 :(得分:1)
我认为这在OpenRefine中非常困难,可能一个不同的工具可以更好地工作。主要问题是OpenRefine不能提供跨行轻松工作的能力,因此“汇总列”(或列的一部分)很棘手 - 这在https://github.com/OpenRefine/OpenRefine/issues/200中提到
但是,您可以通过在记录模式下强制OpenRefine来完成此操作,整个项目包含单个记录。完成此操作后,您可以使用以下语法访问列中的所有值:
row.record.cells["Column name"].value
这给出了列中所有非空值的数组。由于这会忽略空白值,为了真实地查看列中的值,您必须使用值填充空白单元格。
所以我认为你可以达到你想要的效果如下:
此时,您的项目中应该只有一个“记录” - 例如
您现在可以使用row.record.cells [“Column 1”]。value等语法访问列中的所有单元格。您可以将此与'forRange'结合使用row.index作为当前行的标记来迭代此数组的内容。
我使用以下公式为项目添加新列:
with(row.record.cells [“Column 1”]。value,w,if(forRange(row.index,w.length(),1,i,w [i] .toNumber())。sum ()大于0, “一”, “b”))
则...
答案 1 :(得分:0)
我正在做这件事,但我认为我最好的机会是使用fill down option in record mode:
row.record.cells["data"].value[-1]
其中data
是列的名称 [-1]
将取最后一个值并填空。对于红点的情况,由于没有值,它应该保持为空。让我们知道它是怎么回事。
答案 2 :(得分:0)
除非有我遗漏或没看到的东西...... 我只是在Date列上反向排序(日期升序),然后在每一列上单独使用Fill Down,但最后一列除外,您可以在列Date上使用Date facet来指定您想要的确切日期范围使用,然后填写最后一列,然后删除日期范围方面。