|
▼じん さん:
>>2. いつ実行するのか(自動で実行するのか/ 手動で実行するのか も)
>このマクロ自体は転記用シートから本シートに転記し終わった後に起動させます。
>
>>3. マクロ実行後のシートレイアウト
>
>
>>例 マクロ実行前
>> I列 L列
>>1 301〜350 350
>>2 201〜250 230
>>3 201〜250 210 ←ここまで前回のデータが入っています。
>>4 240 ←ここから今回転記したデータです。
>>5 300
>>6 100
>>7 250
>>
>Iが空白でL列に文字が入ってたらマクロを起動して
>>
>>例 マクロ実行前
>> I列 L列
>>1 301〜350 350
>>2 201〜250 230
>>3 201〜250 210
>>4 101〜150 120
>>5 251〜300 300
>>6 〜100 100
>>7 201〜250 250
>このような感じです。
そういうことでしたか。となると、L列の処理を始める行は I列のデータの
最終行のつぎの行から、ということになりますね?
Sub 範囲セット()
Dim i As Long
Dim r1 As Range, r2 As Range
Dim v
With ActiveSheet
Set r1 = .Cells(.Rows.Count, "I").End(xlUp).Offset(1)
Set r2 = .Cells(.Rows.Count, "L").End(xlUp)
v = Excel.Range(r1.Offset(, 3), r2).Value
ReDim sa(1 To UBound(v), 0) As String
For i = 1 To UBound(v)
If Not IsEmpty(v(i, 1)) Then
Select Case v(i, 1)
Case Is >= 501: sa(i, 0) = "501 - "
Case Is >= 451: sa(i, 0) = "451 - 500"
Case Is >= 401: sa(i, 0) = "401 - 450"
Case Is >= 351: sa(i, 0) = "351 - 400"
Case Is >= 301: sa(i, 0) = "301 - 350"
Case Is >= 251: sa(i, 0) = "251 - 300"
Case Is >= 201: sa(i, 0) = "201 - 250"
Case Is >= 151: sa(i, 0) = "151 - 200"
Case Is >= 101: sa(i, 0) = "101 - 150"
Case Else: sa(i, 0) = " - 100"
End Select
End If
Next
r1.Resize(UBound(v)).Value = sa
End With
End Sub
↑はI列にデータが入っていないばあいを考慮に入れていません。
|
|