0

年の範囲内で「ギャップ」年を生成するスクリプトがあります (year_start <-> year_end - 個別の入力)、つまり 1997-2002 の場合、スクリプトは次を生成します: 1997,1998,1999,2000,2001,2002 および表示それぞれの結果が新しい行に (互いに下に)

コンマで区切られた値を使用して、結果を1 つのセル (行ごと)に表示するように変更するにはどうすればよいですか? また、理想的には、開始列 (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

ありがとうございました!

4

1 に答える 1

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 は、少なくとも米国版では、千単位の区切り記号であると想定し、3 つのスペースごとに変更します。今まで気づかなかった!

于 2013-07-12T15:39:16.593 に答える