我有一个脚本可以在一年范围内生成'间隙'年(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
谢谢!
答案 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至少在美国版本中有用地假设您认为它们是千位分隔符并将它们更改为每三个空格。我之前从未注意到这一点!