0

特定の年の範囲で一意の値をリストし、結果を 1 つのセルにコンマ区切り値としてリストする方法を見つけようとしています。以下の例では、列 A には私が持っているデータが含まれており、列 B は目的の結果です。

列 A | B列
2007-2010 | 2007,2008,2009,2010
1999-2001 | 1999,2000,2001

私が考えていた方向性は、2 つの数字の違いを見つけ、その違いに基づいて最初の数字から系列を埋めることでした。次に、1 つのセル内の値をカンマ区切りで連結します。それで、それを踏まえて、これまでのところ私が持っているものは次のとおりです。

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

私はこのアプローチと結婚していないので、遠慮なく別の方向に進んでください。

前もって感謝します!

4

1 に答える 1

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
于 2012-09-24T13:57:20.370 に答える