excel:在一个单元格中生成缺少的年份范围

时间:2013-07-12 15:02:18

标签: excel-vba excel-2007 range vba excel

我有一个脚本可以在一年范围内生成'间隙'年(year_start< - > year_end - 单独的输入),即1997-2002,该脚本生成以下内容: 1997,1998,1999,2000,2001,2002并将每个结果显示在一个新行(彼此之下)

如何修改它以将结果显示到一个单元格(逐行),并用逗号分隔值?另外,理想情况下,我应该能够选择整个开始(A)和结束列(B)的内容,然后应该将结果生成到C列(匹配A和B的行数)。

脚本:

Dim iYear As Integer, iYearS As Integer, iYearE As Integer, iOffset As Integer
Dim oRangeStart As Range

Set oRangeStart = Range("A1")

iYearS = Range("A1")
iYearE = Range("B1")

For iYear = iYearS To iYearE
    oRangeStart.Offset(iOffset, 0).Value = iYear
    iOffset = iOffset + 1
Next

谢谢!

1 个答案:

答案 0 :(得分:1)

这将以逗号分隔的字符串放在C列中,以便运行宏时选择的任何行。没有错误检查以确保这些行的A列和B列包含适当的值:

Sub FillYears()
Dim ws As Worksheet
Dim iYear As Integer, iYearS As Integer, iYearE As Integer
Dim cell As Range
Dim Years As String

Set ws = ActiveSheet
For Each cell In Selection.EntireRow.Columns(3).Cells
    iYearS = ws.Cells(cell.Row, 1).Value
    iYearE = ws.Cells(cell.Row, 2).Value
    Years = vbNullString
    For iYear = iYearS To iYearE
        Years = Years & iYear & ","
    Next iYear
    cell.Value = "'" & Left(Years, Len(Years) - 1)
Next cell
End Sub

请注意,必须在C列的字符串前面加上单引号以强制它为文本。否则,Excel至少在美国版本中有用地假设您认为它们是千位分隔符并将它们更改为每三个空格。我之前从未注意到这一点!