Excel公式生成字符串所有前缀的数组

Excel公式生成字符串所有前缀的数组,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,给定任何数字字符串,我想使用Excel 2010中的公式生成一个包含所有字符串前缀的数组 示例(输入->输出): 输出顺序对我来说很重要,但不是回答这个问题的必要条件,因为有一些排序公式可供我以后应用于输出 错误输入(如空字符串、错误值或其他)应返回空数组、某些错误值或其他同样明显的输出,以显示由于错误输入导致公式失败 必须适用于可变长度的输入字符串。我不会接受假设固定长度输入的答案 必须是Excel公式(因此为Excel公式标记),且不依赖VBA宏。我可以编写一个宏来实现这一点,但出于我的目的

给定任何数字字符串,我想使用Excel 2010中的公式生成一个包含所有字符串前缀的数组

示例(输入->输出):

输出顺序对我来说很重要,但不是回答这个问题的必要条件,因为有一些排序公式可供我以后应用于输出

错误输入(如空字符串、错误值或其他)应返回空数组、某些错误值或其他同样明显的输出,以显示由于错误输入导致公式失败

必须适用于可变长度的输入字符串。我不会接受假设固定长度输入的答案

必须是Excel公式(因此为Excel公式标记),且不依赖VBA宏。我可以编写一个宏来实现这一点,但出于我的目的,我需要一个公式

必须在Excel 2010中工作(因此使用Excel-2010标记)

备选方案

如果您知道如何生成如下输出:

"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}

这也会有很大帮助,因为我相信这些可以作为达成解决方案的中间步骤。是基于输入字符串长度的可变长度输出数组使我卡住了。

如果您的值是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

如果您的值是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

这是美丽的简洁,正是我想要的。谢谢。这是非常简洁的,正是我想要的。非常感谢。