目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
232 / 277 ←次へ | 前へ→

【54】トロイぞUnion
Excel  Jaka  - 04/7/27(火) 11:09 -

引用なし
パスワード
   下記コードにてUnionメソッドのトロさを体験してください。
1行目から2500行目までの間を、1行おきに10列選択します。
一応普通版?とOffsetを使った物を作って見ましたが、選択する個数が増えると、遅さにとても耐えられません。
Unionは、一気に書き込めたりするので便利だとは思いますが、適度な個数でないと、1個1個書き込むより遅いかもしれません。
書き方が悪い性も多少はあるでしょうが...。

Sub ユニトロ()
  Dim 始点 As String, CtR As Long, CtC As Long
  Dim 行数範囲 As Long, 選択行数 As Long, 空き行 As Long
  Dim 選択列数 As Long, UNi選択 As Range, Cnt As Long
  
  始点 = "A1"
  CtR = Range(始点).Row
  CtC = Range(始点).Column
  行数範囲 = 2500
  選択行数 = 1
  空き行 = 1
  選択列数 = 10
  
  Set UNi選択 = Cells(CtR, CtC).Resize(選択行数, 選択列数)
  Cnt = 行数範囲 \ (選択行数 + 空き行) - 1
  MsgBox "選択する行数は、" & Cnt & "行になります。"
  STime = Now()
  For i = 1 To Cnt
    CtR = CtR + 選択行数 + 空き行
    Set UNi選択 = Application.Union(UNi選択, Cells(CtR, CtC).Resize(選択行数, 選択列数))
    現在行 = 現在行下 + 空行数 + 1
  Next
  CTime = Now() - STime
  UNi選択.Select
  MsgBox Format(CTime, "h:mm:ss") & vbCrLf & _
      Format(Now() - STime, "h:mm:ss")
  Set UNi選択 = Nothing
End Sub

Sub ユニトロOffset()
  Dim 始点 As String, CT As Long, i As Long
  Dim 行数範囲 As Long, 選択行数 As Long, 空き行 As Long
  Dim 選択列数 As Long, UNi選択 As Range, Cnt As Long
  
  始点 = "A1"
  行数範囲 = 2500
  選択行数 = 1
  空き行 = 1
  選択列数 = 10
  Set UNi選択 = Range(始点).Resize(選択行数, 選択列数)
  Cnt = 行数範囲 \ (選択行数 + 空き行) - 1
  MsgBox "選択する行数は、" & Cnt & "行になります。"
  CT = Cnt * (選択行数 + 空き行)
  STime = Now()
  For i = 選択行数 + 空き行 To CT Step 選択行数 + 空き行
    Set UNi選択 = Application.Union(UNi選択, Range("A1").Resize(選択行数, 選択列数).Offset(i))
  Next
  CTime = Now() - STime
  UNi選択.Select
  MsgBox Format(CTime, "h:mm:ss") & vbCrLf & _
      Format(Now() - STime, "h:mm:ss")
  Set UNi選択 = Nothing
End Sub

'1行目から2500行までの基本的?な書き込み。(速度比較用)

Sub 書き込みテスト()
  Dim RR As Long
  STime = Now
  For i = 1 To 2500
    Cells(i, 1).Resize(, 10).Value = i
  Next
  MsgBox Format(Now() - STime, "h:mm:ss")
End Sub
2,067 hits

【54】トロイぞUnion Jaka 04/7/27(火) 11:09 Excel[未読]
【66】参考にする方への訂正。 Jaka 04/8/17(火) 15:27 Excel[未読]

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
232 / 277 ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free