0

数値の文字列が与えられた場合、Excel 2010 の数式を使用して、すべての文字列プレフィックスの配列を生成したいと思います。

例 (INPUT -> OUTPUT):

"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 に答える