谷歌表;任意范围为字符串

时间:2018-05-23 05:21:26

标签: google-sheets

如何将任意大小的范围转换为字符串表示形式,稍后使用INDIRECT进行?

ADDRESS仅适用于单个单元格。

请不要编写脚本:)

只有公式。

编辑1; 还假设范围是通过复杂的公式计算的。所以没有可用的单元格地址。

编辑2;

=ArrayFormula(IF((OFFSET(INDIRECT(PayStaff),0,10)>PayrollStart)*(OFFSET(INDIRECT(PayStaff),0,10)<=PayrollEnd),(OFFSET(INDIRECT(PayStaff),0,10)-PayrollStart),0)+IF((OFFSET(INDIRECT(PayStaff),0,11)>=PayrollStart)*(OFFSET(INDIRECT(PayStaff),0,11)<PayrollEnd),(PayrollEnd-OFFSET(INDIRECT(PayStaff),0,11)),0))

没有样本表,因为这是一个假设类型的问题。

以上是我正在使用的实际公式,是我完全自动化的众多努力之一。在任何时候,“PayStaff”中的范围字符串都可以更改,再加上重复但相同的OFFSET调用,很快就会使公式不可读。我解决可读性的一个想法是获得范围字符串(例如:OFFSET(INDIRECT(PayStaff),0,10))并重复使用它,缩短公式并提高可读性。另请注意,该示例不会增加范围,我也需要。

但我们假设PayStaff =“A1:A10”,其中行数可以变化。考虑到OFFSET有4个参数,如何将结果范围作为字符串?这可能吗?

2 个答案:

答案 0 :(得分:1)

这会以字符串的形式给你开始范围:

=cell("Address",OFFSET(INDIRECT(PayStaff),0,10))

范围的结尾更加尴尬 - 您必须将范围(-1)中的行数添加到行偏移量中:

=cell("Address",OFFSET(INDIRECT(PayStaff),rows(indirect(PayStaff))-1,10))

答案 1 :(得分:1)

我只是用它来做类似的事情,希望这会有所帮助:

// <range here> = is the range you want to describe,
// can be output of some other formula but has to be a
// rectangle for this to work.
// Remove // comments and line breaks before pasting to sheet.

// concatenate top left corner with colon and bottom right corner.
=CONCATENATE(
  // use address to get top left corner
  ADDRESS(ROW(<range here>), COLUMN(<range here>)),
  ":",
  // use address to get bottom right corner
  ADDRESS(
    ROW(<range here>)+ROWS(<range here>)-1,
    COLUMN(<range here>)+COLUMNS(<range here>)-1
  )
)