首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel公式,用于生成字符串的所有前缀的数组。

Excel公式,用于生成字符串的所有前缀的数组。
EN

Stack Overflow用户
提问于 2013-01-23 23:28:46
回答 1查看 587关注 0票数 0

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

示例(输入->输出):

代码语言:javascript
复制
"12345" -> {"12345","1234","123","12","1"}

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

"1" -> {"1"}

输出顺序对我很重要,但作为对这个问题的回答,没有必要,因为有一些排序公式可以在输出之后应用到输出中。

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

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

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

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

替代品

如果您知道如何生成这样的输出:

代码语言:javascript
复制
"12345" -> {5,4,3,2,1}

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

"1" -> {1}

甚至只是:

代码语言:javascript
复制
"12345" -> {1,1,1,1,1}

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

"1" -> {1}

这也会有很大的帮助,因为我认为这些步骤可以作为找到解决方案的中间步骤。正是基于输入字符串长度的可变长度输出数组使我陷入困境。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-24 02:10:01

如果您的值在A4中

代码语言:javascript
复制
=TRANSPOSE(MID(A4,1,ROW(OFFSET($A$1,0,0,LEN(A4),1))))

将为您提供长度为1的所有子字符串的数组。

在VBA中:

代码语言:javascript
复制
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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14491324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档