【问题标题】:Google sheets; Arbitrary range as string谷歌表格;任意范围作为字符串
【发布时间】:2018-05-23 05:21:25
【问题描述】:

如何将任意大小的范围转换为字符串表示形式,以供以后使用 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 个参数,如何将结果范围作为字符串获取?这可能吗?

【问题讨论】:

  • 这是不可能的,因为范围是通过复杂的公式计算的(列/行数可变的偏移量)。所以没有可用的单元格地址。更新了 OP 以表明这一点。
  • 我认为您想要的函数是 CELL("ADDRESS"...),但我们确实需要查看公式才能回答问题。此外,如果您要求将范围作为字符串,您可能会问错问题。
  • 根据要求更新了更多信息。

标签: google-sheets


【解决方案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
  )
)

【讨论】:

    【解决方案2】:

    这会给你范围的开始作为一个字符串:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      相关资源
      最近更新 更多