Excel VBA質問箱 IV

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

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


17225 / 76738 ←次へ | 前へ→

【64970】Re:データの抜き出しソートについて
回答  teian  - 10/3/31(水) 12:22 -

引用なし
パスワード
   ▼ゆぅ さん:
>やっぱり全行消し、の方が処理早いんでしょうか。
>範囲選択で行消しだと止まったようになってしまうのです。
>データがたくさんあるからかもしれませんが。
>いろいろ試してみます(^^)

効率にこだわるなら、行の削除とかの重い処理をしなくて済む方法はないかと考えますね。
それでもやはり行削除が必要ならいっぺんに行う方法を考えます。
以下は、メモリー上(配列)でデータを加工して、
一気に吐き出す考えにしたもので、行削除不要としたコード例です。
そのたくさんのデータのあるシートで前のコードと
比較してみるといいかもしれません。

Dim v As Variant, w As Variant
Dim i As Long, j As Long, k As Long
With Worksheets(1).Range("A1").CurrentRegion
'  v = .Value
  v = .Columns("A:C").Value
  ReDim w(1 To UBound(v, 1), 1 To UBound(v, 2))
  k = 1
  For j = 1 To UBound(v, 2)
    w(k, j) = v(k, j)
  Next
  For i = 2 To UBound(v)
    If v(i, 2) = w(k, 2) Then
      w(k, 1) = WorksheetFunction.Max(w(k, 1), v(i, 1))
      w(k, 3) = WorksheetFunction.Max(w(k, 3), v(i, 3))
    Else
      k = k + 1
      For j = 1 To UBound(v, 2)
        w(k, j) = v(i, j)
      Next
    End If
  Next
  .ClearContents
  .Resize(k, UBound(w, 2)).Value = w
End With

なお、データはA:C列にあり1行目はヘッダー行であるという前提にしたので、
安易にForループを2行目からにしてMax関数での例外を避けてますけど。

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 回答

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