Excel VBA質問箱 IV

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

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


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

【50525】データの検索参照方法 ロン 07/7/31(火) 2:52 質問[未読]
【50564】Re:データの検索参照方法 じゅんじゅん 07/8/1(水) 5:51 発言[未読]
【50565】Re:データの検索参照方法 ロン 07/8/1(水) 11:38 質問[未読]
【50566】Re:データの検索参照方法 じゅんじゅん 07/8/1(水) 14:30 回答[未読]
【50569】Re:データの検索参照方法 ロン 07/8/1(水) 19:11 お礼[未読]
【50668】Re:データの検索参照方法 ロン 07/8/8(水) 15:58 質問[未読]
【50669】Re:データの検索参照方法 じゅんじゅん 07/8/8(水) 16:07 回答[未読]
【50690】Re:データの検索参照方法 ロン 07/8/9(木) 22:49 お礼[未読]

【50525】データの検索参照方法
質問  ロン  - 07/7/31(火) 2:52 -

引用なし
パスワード
   VBA初心者で悩んでいます。
どうか宜しくお願いします。

『Book1』のA列には色々な文字列が記載されています。
『Book1』のA1の値と『Book2』のB1からB100のテーブルを参照し
・テーブルに同じ文字列が在れば、
『Book1』のA1からF1までを『Book3』のA1からF1に移動し、
・テーブルに同じ文字列が無ければ、
『Book1』のA2の値と『Book2』のB1からB100のテーブルにある文字列を参照する
という感じで『Book1』のA1から空白セルになるまで
アクティブセルを下に1つずらしながら検索を繰り返すマクロを組みたいです。

【50564】Re:データの検索参照方法
発言  じゅんじゅん  - 07/8/1(水) 5:51 -

引用なし
パスワード
   Book1のA列には重複はないのですか?
もしくは、初めにヒットした値をBook3に移動するのですか?

BookとはBookであって、Sheetではないですか?
その場合、それぞれのBookのどのSheetにデータがあるのでしょう?

【50565】Re:データの検索参照方法
質問  ロン  - 07/8/1(水) 11:38 -

引用なし
パスワード
   ▼じゅんじゅん さん:
ありがとうございます。
説明名不足で申し訳ございません。
補足させていただきます。

・『Book』は『Sheet』ではありません。『Book』(=1ファイル)です。
・3つのBookがあり、データはそれぞれのSheet1にあります。
・Book1のA列には重複するデータはありません。
・初めにヒットした値の行の1〜5列目までを、Book3のSheet1に移動させたいです。
・移動先の位置はBook3の1行目から初め、順に下げて貼り付けていきたいです。

どうか宜しくお願いします。

【50566】Re:データの検索参照方法
回答  じゅんじゅん  - 07/8/1(水) 14:30 -

引用なし
パスワード
   >『Book1』のA1からF1までを『Book3』のA1からF1に移動し、
>初めにヒットした値の行の1〜5列目までを
が一致しないのですが。
取り敢えず、A列からF列までと言う事にします。

Bookは3つとも開いている状態とし、Book3に転記を開始する時は
必ず1行目から行なうとした場合、

Sub test()
  Dim WS1 As Worksheet
  Dim WS2 As Worksheet
  Dim WS3 As Worksheet
  Dim r As Range, rr As Range
  Dim i As Long

Set WS1 = Workbooks("Book1.xls").Worksheets("Sheet1")
Set WS2 = Workbooks("Book2.xls").Worksheets("Sheet1")
Set WS3 = Workbooks("Book3.xls").Worksheets("Sheet1")
Set rr = WS3.Range("A1")
  
i = 1
With WS1
   Do
    Set r = WS2.Columns("B").Find(What:=.Range("A" & i).Value, _
        LookIn:=xlValues, LookAt:=xlWhole)
      If Not r Is Nothing Then
       rr.Resize(, 6).Value = .Range("A" & i).Resize(, 6).Value
       Set rr = rr.Offset(1)
      End If
    Set r = Nothing
   i = i + 1
   Loop Until i > .Range("A" & Rows.Count).End(xlUp).Row
End With
End Sub

ファイルをコピーしてから実施してみて下さい。

【50569】Re:データの検索参照方法
お礼  ロン  - 07/8/1(水) 19:11 -

引用なし
パスワード
   じゅんじゅんさん、ありがとうございます。
マクロ見ていましたら処理ニュアンスが伝わってきました。
書いていただいたマクロをコピーして
実行しましたら完璧に理想通りの処理をしてくれ
思わず「スゴイっ!」って叫んでしまいました(^o^)/
検索するキーは文字列の数字5桁だったのですが
Book2のデータベースが数値でも文字列でも
関係なく同等に処理されて嬉しくなりました!

大切な仕事があり悩んでいましたが
これで大きく前進できます。
本当にありがとうございました。
大切に使わせていただきます。
また何かありましたらご相談させていただきたく思います。
本当にありがとうございました。

【50668】Re:データの検索参照方法
質問  ロン  - 07/8/8(水) 15:58 -

引用なし
パスワード
   お世話になります。
先日はありがとうございました。
追加でBook2のテーブルに該当しない場合は
Book4にコピーする必要がでてきました。
見よう見まねで以下のようにWS4関連のマクロを追加しました。
こんな感じでよろしいのでしょうか?
幸いにも走行は可能でしたが
Do〜Loopの間の意味が理解できていないため
バグが出たときに不安です・・・。

Sub test()

  Dim WS1 As Worksheet
  Dim WS2 As Worksheet
  Dim WS3 As Worksheet
  Dim WS4 As Worksheet
  Dim r As Range, rr As Range
  Dim s As Range, ss As Range
  Dim i As Long

Set WS1 = Workbooks("Book1.xls").Worksheets("Sheet1")
Set WS2 = Workbooks("Book2.xls").Worksheets("Sheet1")
Set WS3 = Workbooks("Book3.xls").Worksheets("Sheet1")
Set WS4 = Workbooks("Book4.xls").Worksheets("Sheet1")
Set rr = WS3.Range("A1")
Set ss = WS4.Range("A1")
 
i = 1
With WS1
   Do
    Set r = WS2.Columns("B").Find(What:=.Range("A" & i).Value, _
        LookIn:=xlValues, LookAt:=xlWhole)
      If Not r Is Nothing Then
       rr.Resize(, 6).Value = .Range("A" & i).Resize(, 6).Value
       Set rr = rr.Offset(1)
      Else
       ss.Resize(, 6).Value = .Range("A" & i).Resize(, 6).Value
       Set ss = ss.Offset(1)
      End If
    Set r = Nothing
   i = i + 1
   Loop Until i > .Range("A" & Rows.Count).End(xlUp).Row
End With
End Sub

【50669】Re:データの検索参照方法
回答  じゅんじゅん  - 07/8/8(水) 16:07 -

引用なし
パスワード
   ▼ロン さん:
>お世話になります。
>先日はありがとうございました。
>追加でBook2のテーブルに該当しない場合は
>Book4にコピーする必要がでてきました。
>見よう見まねで以下のようにWS4関連のマクロを追加しました。
>こんな感じでよろしいのでしょうか?
>幸いにも走行は可能でしたが
>Do〜Loopの間の意味が理解できていないため
>バグが出たときに不安です・・・。

大丈夫だと思います。
ループはWS1のA列を順に見ているので、
今回の変更には問題ないでしょう。

【50690】Re:データの検索参照方法
お礼  ロン  - 07/8/9(木) 22:49 -

引用なし
パスワード
   じゅんじゅんさん。
こんばんは。
ありがとうございます。
ホッとしました。
また頑張っていけそうです!
ではでは。

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