0

我正在尝试找到一种方法来列出给定年份范围内的唯一值,并将结果在一个单元格中作为逗号分隔值列出。在下面的示例中,A 列包含我拥有的数据,B 列是所需的结果。

A栏| B栏
2007-2010 | 2007、2008、2009、2010
1999-2001 | 1999,2000,2001

我正在考虑的方向是找到两个数字之间的差异,并根据差异从第一个数字填充系列。然后用逗号分隔符连接一个单元格中的值。因此,基于此,这是我目前所拥有的:

LR = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],4)-LEFT(RC[-1],4)"
    Range("B1").Select
    Selection.AutoFill Destination:=Range("B1:B" & LR), Type:=xlFillDefault
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-2],4)"
    Range("C1").Select
    Selection.AutoFill Destination:=Range("C1:C" & LR), Type:=xlFillDefault

我不喜欢这种方法,所以请随意引导我走向不同的方向。

提前致谢!

4

1 回答 1

1

像这样的直接VBA答案。将 rStart 更改为数据的第一个单元格:

Sub SplitYears()
Dim rStart As Range, lRow As Long, lYear1 As Long, lYear2 As Long

    Set rStart = Sheet3.Range("A1")
    lRow = 0

    Do While rStart.Offset(lRow, 0).Value <> ""
' Get start and end year
        lYear1 = CLng(Left(rStart.Offset(lRow, 0).Value, 4))
        lYear2 = CLng(Right(rStart.Offset(lRow, 0).Value, 4))
        With rStart.Offset(lRow, 1)
            .ClearContents
            .NumberFormat = "@"
' Append each year with comma
            Do While lYear1 <= lYear2
                .Value = .Value & lYear1 & ","
                lYear1 = lYear1 + 1
            Loop
' Lose final comma
            .Value = Left(.Value, Len(.Value) - 1)
        End With

        lRow = lRow + 1
    Loop
End Sub
于 2012-09-24T13:57:20.370 回答