我正在尝试找到一种方法来列出给定年份范围内的唯一值,并将结果列为一个单元格中的逗号分隔值。在下面的示例中,A列包含我拥有的数据,B列是所需的结果。
Column A | Column 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
我没有和这种方法结婚,所以请随意引导我走向另一个方向。
提前致谢!
答案 0 :(得分: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