Excel公式生成一个string的所有前缀的数组

给定任何string的数字,我想要生成一个所有string前缀的数组,使用Excel 2010中的公式。

示例(INPUT – > OUTPUT):

"12345" -> {"12345","1234","123","12","1"} "6524" -> {"6524","652","65","6"} "1" -> {"1"} 

输出顺序对于我来说很重要,但是对于这个问题来说并不是必要的,因为有sorting公式可供我随后应用于输出。

错误的input(例如空string,错误值或其他)应返回一个空数组,一些错误值或其他同样明显的输出,以显示由于错误input而导致的公式失败。

必须适用于可变长度的inputstring。 我不会接受一个假设定长input的答案。

必须是Excel公式(因此是Excel公式标记),而不是依赖于VBAmacros。 我可以写一个这样的macros,但为了我的目的,我需要一个公式。

必须在Excel 2010中工作(因此是Excel 2010标签)。

备择scheme

如果你知道如何产生这样的输出:

 "12345" -> {5,4,3,2,1} "6524" -> {4,3,2,1} "1" -> {1} 

甚至只是:

 "12345" -> {1,1,1,1,1} "6524" -> {1,1,1,1} "1" -> {1} 

这也会有很大的帮助,因为我相信这些可以作为中间步骤来解决问题。 这是基于inputstring长度的可变长度输出数组。

如果你的价值在A4

 =TRANSPOSE(MID(A4,1,ROW(OFFSET($A$1,0,0,LEN(A4),1)))) 

将给你一个长度为1的全部子串的数组。

在VBA中:

 Sub tester() Dim v, x v = Application.Evaluate("=TRANSPOSE(MID(A4,1,ROW(OFFSET($A$1,0,0,LEN(A4),1))))") For x = LBound(v) To UBound(v) Debug.Print x, v(x) Next x End Sub