Excel VBA質問箱 IV

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

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


13602 / 76738 ←次へ | 前へ→

【68639】Re:VBA初心者です
発言  kanabun  - 11/3/31(木) 17:15 -

引用なし
パスワード
   あと、Dictioanryオブジェクトを使った
こんな方法もありそうです。
これも参考まで。。。

Sub Try2()
 Dim v1 As Variant 'Book1 A列
 Dim v2 As Variant 'Book2 A列
 Dim d2 As Variant  'Book2 G列 日付
 Dim i As Long
 Dim ss As String
 Dim dic As Object
 Set dic = CreateObject("Scripting.Dictionary")
 
'Book2のA列検索対象範囲
 With Workbooks("Book2.xls").Worksheets(1)
   With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
     v2 = .Value
     d2 = .Offset(, 6).Value
   End With
 End With
 For i = 1 To UBound(v2) 'Dictionaryの作成
   ss = v2(i, 1)
   If Not dic.Exists(ss) Then
     dic(ss) = d2(i, 1) 'A列をKeyに、G列をItemにセット
   End If
 Next

'Book1のA列Loop範囲
 With Workbooks("Book1.xls").Worksheets(1)
   With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp))
     v1 = .Value
    '500,000を引いてDictionaryにkeyがあるか調べる
     For i = 1 To UBound(v1)
       ss = v1(i, 1) - 500000
       If dic.Exists(ss) Then
         v1(i, 1) = dic(ss)
       Else
         v1(i, 1) = Empty
       End If
     Next
     .Offset(, 8).Value = v1
   End With
 End With
 
 Set dic = Nothing
End Sub

0 hits

【68633】VBA初心者です mo 11/3/31(木) 13:26 質問
【68635】Re:VBA初心者です UO3 11/3/31(木) 14:34 回答
【68636】Re:VBA初心者です mo 11/3/31(木) 16:00 お礼
【68637】Re:VBA初心者です kanabun 11/3/31(木) 16:07 発言
【68639】Re:VBA初心者です kanabun 11/3/31(木) 17:15 発言
【68641】Re:VBA初心者です kanabun 11/3/31(木) 20:13 発言
【68651】Re:VBA初心者です mo 11/4/1(金) 12:32 お礼

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