2013-07-12 117 views
0

我有一个脚本可以在一年范围内生成'缺口'年份(year_start < - > year_end - 单独的输入),即对于1997-2002,脚本生成以下: 1997,1998,1999,2000,2001,2002和显示一个新的行中的每个结果(下彼此)excel:在一个单元格中生成缺失的年份范围

如何修改它来显示结果进一个细胞(行接一行基础),用逗号分隔值?另外,理想情况下,我应该能够选择整个开始(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

这使得C运行宏时所选行的逗号分隔字符串成为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至少会在美国版本中有用地假设,你的意思是他们是成千上万的分隔符并将它们改为每三个空格。我以前从未注意到!

+0

完美!你救了我的命!谢谢! – user2381937

相关问题