| 
    
     |  | Hirofumi様 
 ご回答有難うございました。
 
 格段に処理が早くなりました!
 感謝いたします!
 
 Hirofumiさんは普段どのような思想で
 モジュールを組むのでしょうか?
 
 もしよければ教えて頂けないでしょうか。
 今後の参考になればと思います。
 (図々しいお願いですいません)
 
 ▼Hirofumi さん:
 >セルを1つづつ読み書きする事が非常に遅いので、こんな事をすると少しは速く成ると思います
 >全データを配列に取得し、其れを使って確保した結果出力用配列に処理を書き込みます
 >集計処理が終わったら結果用配列をシートに出力しています
 >
 >Option Explicit
 >
 >Sub ResetList2()
 >
 >  Dim i As Long
 >  Dim lngRows As Long
 >  Dim rngList As Range
 >  Dim vntData As Variant
 >  Dim vntResult As Variant
 >
 >  'データの先頭を基準とする
 >  Set rngList = Cells(1, 1)
 >
 >  With rngList
 >    'データ行数を取得
 >    lngRows = .Offset(Rows.Count - .Row).End(xlUp).Row - .Row + 1
 >    If lngRows <= 1 And .Value = "" Then
 >      Set rngList = Nothing
 >      Exit Sub
 >    End If
 >    'データを配列に取得
 >    vntData = .Offset(, 2).Resize(lngRows + 1).Value
 >  End With
 >
 >  '出力用配列を確保
 >  ReDim vntResult(1 To lngRows, 1 To 4)
 >
 >  'データ全行に就いて繰り返し
 >  For i = 1 To lngRows
 >    vntResult(i, 1) = Left(vntData(i, 1), 1)
 >    vntResult(i, 2) = Mid(vntData(i, 1), 2, 1)
 >    vntResult(i, 3) = Mid(vntData(i, 1), 3, 1)
 >    vntResult(i, 4) = Right(vntData(i, 1), 1)
 >  Next i
 >
 >  '集計結果を出力
 >  rngList.Offset(, 3).Resize(lngRows, 4).Value = vntResult
 >
 >  Set rngList = Nothing
 >
 >  MsgBox "リストのリセットが完了しました!!"
 >
 >End Sub
 
 
 |  |