【问题标题】:Is there something like the SEQUENCE function in Excel in Libreoffice Calc?Libreoffice Calc 中的 Excel 中是否有类似 SEQUENCE 函数的功能?
【发布时间】:2022-11-26 22:29:43
【问题描述】:

在 Excel 中,如果我有两列并且我希望第一列是 ID,例如第二列是一个字符串。我可以简单地将序列复制下来。我可以在 Libreoffice 中做同样的事情,没问题。 (像下面的例子)

ID-1 | String 1
ID-2 | String 2
ID-3 | 

但 Excel 还允许您使用 Sequence 函数仅在另一个单元格具有值时填充序列。这是这样做的:

-SEQUENCE(COUNTA(B0:B3))

然后我会得到类似下面的结果,其中没有填写 ID-3 序列,因为 COUNTA 函数返回 false。

ID-1 | String 1
ID-2 | String 2
     | 

我在 Calc 中找不到序列函数,我想知道它是否以另一个名称存在,或者我是否需要用 IF 语句做一些更复杂的事情?

【问题讨论】:

  • 据我所知,LibreOffice Calc 既不支持SEQUENCE(),也不支持数组溢出。你会用老式的方式做这件事,然后往下拖。
  • 是的,我可以向下拖动,但在 excel 示例中,只有当 B 列中有值时,ID 列才会被填充。所以我假设我需要使用 IF ??
  • 正是@Rick Dearman。可能类似于=IF(A1="";"";"String "&COUNTA(A$1:A1))

标签: excel sequence libreoffice-calc


【解决方案1】:

我用以下方法做到了。

=IF(ISBLANK(B1),"",CONCAT("ID-",ROW(A1)))

虽然与 Excel 函数相比这不是最优的,所以我可能会自己编写一个 SEQUENCE() 函数以允许更通用的序列。

【讨论】:

    【解决方案2】:
    MMULT(MUNIT(SequenceLength);ROW(OFFSET($A$1;0;0;SequenceLength;1)))
    

    分别

    MMULT(COLUMN(OFFSET($A$1;0;0;1;SequenceLength));MUNIT(SequenceLength))
    

    取决于您需要垂直还是水平矢量。

    (当然,用所需的长度替换“SequenceLength”。)


    问题是,通常的矩阵公式将任何范围参考矩阵视为相对于当前单元格。所以我必须找到一种方法来释放矩阵与单元格范围的连接。幸运的是,MMULT 可以解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2016-05-31
      • 2019-12-15
      • 1970-01-01
      相关资源
      最近更新 更多