Excel VBA質問箱 IV

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

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


10552 / 76734 ←次へ | 前へ→

【71728】Re:表の整理
発言  UO3  - 12/4/3(火) 13:16 -

引用なし
パスワード
   ▼ドカ さん:

以下は、もっと極端に差がでます。

TestGen2 これは、先ほどのTestGenより、もっと時間がかかりますががまんしてください。
A列,B列にランダムな値をセットします。
で、そのA列からランダムに5つ、値を取り出して、D列におきます。

Test3,Test4 ともに、このD列の値を持つA列の行のB列の値をE列に転記します。

Sub TestGen2()
  Dim i As Long
  Dim x As Long
  
  With Sheets("Sheet1")
    .Cells.Clear
    For i = 1 To 50000
      x = Int((50000) * Rnd + 1)
      .Cells(i, "A").Value = "A" & Format(i, "0000")
      .Cells(i, "B").Value = x
    Next
    For i = 1 To 5
      x = Int((50000) * Rnd + 1)
      .Cells(i, "D").Value = .Cells(x, "A").Value
    Next
    
    .Columns("A:B").Sort key1:=.Range("B1"), order1:=xlAscending, Header:=xlNo
    .Cells.Copy Sheets("Sheet2").Range("A1")
  End With
  
End Sub

Sub Test3()
  Dim dic As Object
  Dim c As Range
  Dim myTime As Double
  
  myTime = Timer   '計測開始
  
  Application.ScreenUpdating = False
  Set dic = CreateObject("Scripting.Dictionary")
  
  With Sheets("Sheet1")
    With .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
      For Each c In .Cells
        dic(c.Value) = c.Offset(, 1).Value
      Next
    End With
    
    For Each c In .Range("D1", .Range("D" & .Rows.Count).End(xlUp))
      c.Offset(, 1).Value = dic(c.Value)
    Next
  End With
  Application.ScreenUpdating = True
  
  MsgBox Timer - myTime
  
End Sub

Sub Test4()
  Dim c As Range
  Dim myTime As Double
  Dim myA As Range
  Dim x As Long
  
  myTime = Timer   '計測開始
  
  Application.ScreenUpdating = False
  
  With Sheets("Sheet1")
    With .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
      .Resize(, 2).Sort key1:=.Range("A1"), order1:=xlAscending
      Set myA = .Columns(1)
    End With
    
    For Each c In .Range("D1", .Range("D" & .Rows.Count).End(xlUp))
      x = WorksheetFunction.Match(c.Value, myA)
      c.Offset(, 1).Value = .Range("B" & x).Value
    Next
  End With
  Application.ScreenUpdating = True
  
  MsgBox Timer - myTime

End Sub

21 hits

【71555】表の整理 ドカ 12/3/16(金) 20:43 質問
【71557】Re:表の整理 ドカ 12/3/16(金) 20:54 発言
【71559】Re:表の整理 何か変じゃないですか 12/3/16(金) 22:44 発言
【71561】Re:表の整理 ドカ 12/3/17(土) 4:42 発言
【71560】Re:表の整理 UO3 12/3/16(金) 23:09 発言
【71562】Re:表の整理 ドカ 12/3/17(土) 4:57 お礼
【71564】Re:表の整理 UO3 12/3/17(土) 9:39 回答
【71671】Re:表の整理 ドカ 12/3/27(火) 14:10 質問
【71672】Re:表の整理 UO3 12/3/27(火) 16:43 発言
【71673】Re:表の整理 UO3 12/3/27(火) 17:20 発言
【71674】Re:表の整理 ドカ 12/3/27(火) 20:11 発言
【71675】Re:表の整理 ドカ 12/3/28(水) 9:08 お礼
【71676】Re:表の整理 UO3 12/3/28(水) 10:34 発言
【71677】Re:表の整理 ドカ 12/3/28(水) 11:10 発言
【71678】Re:表の整理 UO3 12/3/28(水) 15:08 発言
【71679】Re:表の整理 UO3 12/3/28(水) 15:13 発言
【71683】Re:表の整理 ドカ 12/3/28(水) 20:34 お礼
【71688】Re:表の整理 ドカ 12/3/30(金) 8:29 質問
【71689】Re:表の整理 ドカ 12/3/30(金) 9:06 質問
【71690】Re:表の整理 UO3 12/3/30(金) 10:27 発言
【71691】Re:表の整理 UO3 12/3/30(金) 11:46 発言
【71692】Re:表の整理 UO3 12/3/30(金) 21:10 発言
【71720】Re:表の整理 UO3 12/4/2(月) 14:10 発言
【71724】Re:表の整理 ドカ 12/4/3(火) 7:59 お礼
【71728】Re:表の整理 UO3 12/4/3(火) 13:16 発言
【71731】Re:表の整理 UO3 12/4/3(火) 16:54 発言
【71725】Re:表の整理 ドカ 12/4/3(火) 8:15 質問
【71726】Re:表の整理 UO3 12/4/3(火) 12:39 発言
【71727】Re:表の整理 UO3 12/4/3(火) 12:44 発言
【71736】Re:表の整理 ドカ 12/4/4(水) 15:59 お礼

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