生成分隔数字列表

生成分隔数字列表

Excel 中是否有一个函数可以生成如下数字列表:

1|2|3|4|5

如下图所示:

在此处输入图片描述

我希望能够提供开始和结束,类似于=NUMBERSRANGE(1,50)。无需从其他两个单元格获取输入。

我做了一些研究,这是我的第一个 Excel 函数:

Function RANGENUMBERS(D7, E7)
For i = D7 To E7
    RANGENUMBERS = i & "|"
Next
End Function

我该如何连接 For 循环中的数字以获得所需的结果?

答案1

这需要以下TEXTJOIN()函数:

工作表截图

数组输入(Ctrl++ ShiftEnter以下公式(不要忘记删除{and }):

{=TEXTJOIN("|",TRUE,ROW(INDEX(C:C,1):INDEX(C:C,5)))}

虽然这可以按原样工作,但最好用C:C输入公式的列来替换。这样,如果C删除列,公式就不会中断。

注意TEXTJOIN()仅在 Excel 2016 中可用。在早期版本的 Excel 中,需要 poly-fill UDF。(请参阅这个帖子为一个基本的。

还要注意的是,这是一个比使用函数的普遍替代方案更好的解决方案INDIRECT()

{=TEXTJOIN("|",TRUE,ROW(INDIRECT("1:5")))}

因为INDIRECT()不稳定,导致工作表计算速度较慢。

修改版本也更容易INDEX,因此端点是引用而不是硬编码值。

答案2

与电话号码和邮政编码 + 4 掩码类似,如果数字始终为 5 位数字,那么如何使用自定义数字格式,例如:#|#|#|#|#

相关内容