Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


17218 / 76732 ←次へ | 前へ→

【64971】Re:データの抜き出しソートについて
発言  Hirofumi  - 10/3/31(水) 12:43 -

引用なし
パスワード
   行処理で、リソース優先で大きな配列を用意しなくても幾らか速く成る様です?

「日付」の列見出しがA1に在る物とします

Option Explicit

Public Sub Sample()

  Dim i As Long
  Dim lngRow As Long
  Dim lngRowEnd As Long
  Dim vntResult As Variant
  Dim vntData As Variant
  
  Application.ScreenUpdating = False
  
  With ActiveSheet
    '最終行を取得
    lngRowEnd = .Cells(Rows.Count, "A").End(xlUp).Row
    '書き込み行初期値(2行目から書き込む)
    lngRow = 2
    '出力用配列の初期値取得(2行目を3列読み込む)
    vntResult = .Range(.Cells(lngRow, "A"), .Cells(lngRow, "C")).Value
    'データ2行目から最終行+1まで繰り返し
    For i = lngRow + 1 To lngRowEnd + 1
      'Loopで見ている行、1行分配列に取得
      vntData = .Range(.Cells(i, "A"), .Cells(i, "C")).Value
      '前の行と項目列の値が同じなら
      If vntResult(1, 2) = vntData(1, 2) Then
        'もし、読み込んだ行の日付が出力用配列の日付より大きければ
        If vntResult(1, 1) < vntData(1, 1) Then
          '出力用配列の日付を入れ替える
          vntResult(1, 1) = vntData(1, 1)
        End If
        'もし、読み込んだ行の値段が出力用配列の値段より大きければ
        If vntResult(1, 3) < vntData(1, 3) Then
          '出力用配列の日付を入れ替える
          vntResult(1, 3) = vntData(1, 3)
        End If
      Else
        '出力用配列を書き込み位置に出力
        .Range(.Cells(lngRow, "A"), .Cells(lngRow, "C")).Value = vntResult
        '書き込み位置を更新
        lngRow = lngRow + 1
        '出力用配列の中身を読み込んだ行のデータに入れ替え
        vntResult = vntData
      End If
    Next i
    '余分なデータを削除
    .Range(.Cells(lngRow, "A"), .Cells(lngRowEnd, "C")).Delete
  End With
  
  Application.ScreenUpdating = True
  
  MsgBox "処理が完了しました", vbInformation

End Sub
0 hits

【64957】データの抜き出しソートについて ゆぅ 10/3/29(月) 23:28 質問
【64959】Re:データの抜き出しソートについて Hirofumi 10/3/30(火) 7:32 発言
【64960】Re:データの抜き出しソートについて teian 10/3/30(火) 8:50 回答
【64963】Re:データの抜き出しソートについて teian 10/3/30(火) 15:42 回答
【64969】Re:データの抜き出しソートについて ゆぅ 10/3/30(火) 23:21 お礼
【64970】Re:データの抜き出しソートについて teian 10/3/31(水) 12:22 回答
【64971】Re:データの抜き出しソートについて Hirofumi 10/3/31(水) 12:43 発言
【64981】Re:データの抜き出しソートについて teian 10/3/31(水) 15:43 回答
【64989】Re:データの抜き出しソートについて Hirofumi 10/3/31(水) 17:41 回答
【64990】Re:データの抜き出しソートについて teian 10/3/31(水) 17:51 発言
【64991】Re:データの抜き出しソートについて Hirofumi 10/3/31(水) 18:40 回答

17218 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free