gpt4 book ai didi

excel - 是否有收缩单元格中数字系列或范围的功能?

转载 作者:行者123 更新时间:2023-12-04 21:28:46 26 4
gpt4 key购买 nike

我有一个电子表格,其中包括以逗号分隔的年份范围,在其他用途​​中可能难以阅读,例如:

1900, 1901, 1902, 1904, 1905, 1906, 1910, 1911, 1912, 1913, 1914, 1915, etc.

理想情况下,我会将范围缩小/截断以更清晰:
1900–1902, 1904–1906, 1910–1915, etc.

我怎样才能最好地在 Excel 中实现这一点?

最佳答案

你可以把它放到一个函数中,这样你就可以在 VBA 甚至公式中使用它:

因此,您需要做的就是将输入序列拆分为 ", "并循环遍历数字以测试当前数字是否 f(i)与之前的编号 f(i-1) 连续.如果它们不连续,您需要结束当前范围并开始一个新范围。

只有一个棘手的部分,那就是避免单年范围显示为 …, 1918-1918, …并输出 …, 1918, …反而。

Option Explicit

Public Function ReduceConsecutiveNumbersToRanges(ByVal InputSequence As String) As String
Dim InputArr() As String
InputArr = Split(InputSequence, ", ")

Dim OutputSeqStart As Long 'current range start
OutputSeqStart = InputArr(0)

Dim OutputSequence As String

'start output sequence
OutputSequence = OutputSeqStart

'find gaps to write ranges
Dim i As Long
For i = LBound(InputArr) + 1 To UBound(InputArr)
If Not InputArr(i) = InputArr(i - 1) + 1 Then
'current number is not in sequence so we need to end current sequence and start a new one
If InputArr(i - 1) = OutputSeqStart Then 'check if it is a single-year-range only to avoid outputs like `…, 1918-1918, …` and output `…, 1918, …` instead
OutputSequence = OutputSequence & ", " & InputArr(i)
OutputSeqStart = InputArr(i)
Else
OutputSequence = OutputSequence & "-" & InputArr(i - 1) & ", " & InputArr(i)
OutputSeqStart = InputArr(i)
End If
End If
Next i

'end output sequence if it is not a single-year range
If Not InputArr(i - 1) = OutputSeqStart Then
OutputSequence = OutputSequence & "-" & InputArr(i - 1)
End If

ReduceConsecutiveNumbersToRanges = OutputSequence
End Function

Public Sub TestFunction()
Debug.Print ReduceConsecutiveNumbersToRanges("1900, 1901, 1902, 1904, 1905, 1906, 1910, 1911, 1912, 1913, 1914, 1915, 1918, 1920, 1921")
'output will be: 1900-1902, 1904-1906, 1910-1915, 1918, 1920-1921
End Sub

会减少
1900, 1901, 1902, 1904, 1905, 1906, 1910, 1911, 1912, 1913, 1914, 1915, 1918, 1920, 1921


1900-1902, 1904-1906, 1910-1915, 1918, 1920-1921

关于excel - 是否有收缩单元格中数字系列或范围的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61886578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com