Excel VBA質問箱 IV

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

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


9381 / 13644 ツリー ←次へ | 前へ→

【27684】データベースシート検索 まるお 05/8/16(火) 1:16 質問[未読]
【27685】Re:データベースシート検索 かみちゃん 05/8/16(火) 5:56 発言[未読]
【27690】Re:データベースシート検索 だるま 05/8/16(火) 10:17 回答[未読]
【27704】Re:データベースシート検索 まるお 05/8/16(火) 20:31 お礼[未読]

【27684】データベースシート検索
質問  まるお E-MAIL  - 05/8/16(火) 1:16 -

引用なし
パスワード
   異なるEXCELシート上の2つのデータベースをチェックして、1つの合成データベースを下記のように作成したいのですが、マクロの組み方を教えて頂けませんか。

(シート1)
A1 B1
A2 B2
A3 B3



→1000行程度在ります。

(シート2)
A2 01
A1 03
A3 05
→500行程度在ります。

(合成)
A1 B1 03
A2 B2 01
A3 B3 05




【27685】Re:データベースシート検索
発言  かみちゃん  - 05/8/16(火) 5:56 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>異なるEXCELシート上の2つのデータベースをチェックして、1つの合成データベースを下記のように作成したい

一般操作の関数、VLOOKUP関数ではいけないのでしょうか?
どうしても、マクロでしたいのならば、Findメソッドを使えばできるような気がします。
ヘルプ情報に使用例とともに載っていますので、ちょっと調べてみてください。

【27690】Re:データベースシート検索
回答  だるま WEB  - 05/8/16(火) 10:17 -

引用なし
パスワード
   こんにちは

こんな感じでいかがでしょうか。^d^

(Sheet1とSheet2から読み込み、Sheet3に書き出しています。
また、Item側(B列)には「,」(カンマ)が含まれていないことが条件です。)

Sub myDataBase()
  Dim Dic As Object
  Dim A As Variant
  Dim i As Long
  Dim K As Variant
  Dim Itm As Variant
  
  Set Dic = CreateObject("Scripting.Dictionary")
  
  A = Worksheets("Sheet1").Range("A1").CurrentRegion.Value
  For i = 1 To UBound(A)
    Dic.Item(A(i, 1)) = A(i, 2)
  Next
  
  A = Worksheets("Sheet2").Range("A1").CurrentRegion.Value
  For i = 1 To UBound(A)
    Dic.Item(A(i, 1)) = Dic.Item(A(i, 1)) & "," & A(i, 2)
  Next
  
  ReDim A(1 To Dic.Count, 1 To 3)
  
  i = 0
  For Each K In Dic.Keys
    i = i + 1
    A(i, 1) = K
    Itm = Split(Dic.Item(K), ",")
    A(i, 2) = Itm(0)
    A(i, 3) = Itm(1)
  Next
  
  Worksheets("Sheet3").Range("A1").Resize(Dic.Count, 3).Value = A
  
  Set Dic = Nothing
End Sub

【27704】Re:データベースシート検索
お礼  まるお E-MAIL  - 05/8/16(火) 20:31 -

引用なし
パスワード
   だるまさん。
有難うございました。
早速、試してみました。完璧です。


▼だるま さん:
>こんにちは
>
>こんな感じでいかがでしょうか。^d^
>
>(Sheet1とSheet2から読み込み、Sheet3に書き出しています。
>また、Item側(B列)には「,」(カンマ)が含まれていないことが条件です。)
>
>Sub myDataBase()
>  Dim Dic As Object
>  Dim A As Variant
>  Dim i As Long
>  Dim K As Variant
>  Dim Itm As Variant
>  
>  Set Dic = CreateObject("Scripting.Dictionary")
>  
>  A = Worksheets("Sheet1").Range("A1").CurrentRegion.Value
>  For i = 1 To UBound(A)
>    Dic.Item(A(i, 1)) = A(i, 2)
>  Next
>  
>  A = Worksheets("Sheet2").Range("A1").CurrentRegion.Value
>  For i = 1 To UBound(A)
>    Dic.Item(A(i, 1)) = Dic.Item(A(i, 1)) & "," & A(i, 2)
>  Next
>  
>  ReDim A(1 To Dic.Count, 1 To 3)
>  
>  i = 0
>  For Each K In Dic.Keys
>    i = i + 1
>    A(i, 1) = K
>    Itm = Split(Dic.Item(K), ",")
>    A(i, 2) = Itm(0)
>    A(i, 3) = Itm(1)
>  Next
>  
>  Worksheets("Sheet3").Range("A1").Resize(Dic.Count, 3).Value = A
>  
>  Set Dic = Nothing
>End Sub

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