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