0

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

示例(输入 -> 输出):

"12345" -> {"12345","1234","123","12","1"}

"6524" -> {"6524","652","65","6"}

"1" -> {"1"}

输出顺序对我来说很重要,但作为这个问题的答案并不是必需的,因为有可用的排序公式可以在之后应用于输出。

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

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

必须是 Excel 公式(因此是 excel-formula 标记)并且不依赖于 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}

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

4

1 回答 1

4

如果您的值在 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
于 2013-01-24T02:10:01.233 回答