Excel VBA質問箱 IV

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

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


41296 / 76732 ←次へ | 前へ→

【40517】Re:検索して一致したらデータ入力
発言  ichinose  - 06/7/15(土) 15:10 -

引用なし
パスワード
   ▼涙 さん:
こんにちは。

>
>質問の内容が分かりにくくて申し訳ないです。
いえ、内容は入力データと出力データ例を記述して頂きましたから
わかったつもりですが・・・。

>試してみましたところ、DDDだけではなく
>リストにあった全てのデータが以下のように
私の方では、DDDだけの追加になっていますが・・・。


では、新規ブックに以下のコードで実行してみて下さい。
涙 さんが提示されたサンプルデータもコードで作成しました。

標準モジュールに

'========================================================
Option Explicit
Sub main()
  Dim rng1 As Range
  Dim rng2 As Range
  Dim crng As Range
  Dim nrw As Long
  Call mk_sample_data
  MsgBox "サンプルを Sheet1、Sheet2に作成しました。ここから、処理実行です。"
'Sheet1がシートASheet2がシートBに相当します

  With Worksheets("sheet1")
    Set rng1 = .Range("a2", .Cells(.Rows.Count, "a").End(xlUp))
    End With
  With Worksheets("sheet2")
    Set rng2 = .Range("b2", .Cells(.Rows.Count, "b").End(xlUp))
    End With
  If rng1.Row > 1 Then
    If rng2.Row > 1 Then
     nrw = 0
     For Each crng In rng1
       If Evaluate("=SUM(EXACT(" & rng2.Address(, , , True) & "," & crng.Address(, , , True) & ")*1)") = 0 Then
        With rng2
          .Cells(.Rows.Count + 1 + nrw, 1).Resize(, 2).Value = crng.Resize(, 2).Value
          .Cells(.Rows.Count + 1 + nrw, 3).Value = 1000
          End With
        nrw = nrw + 1
        End If
       Next
    Else
     With rng2
       .Cells(2, 1).Resize(rng1.Rows.Count, 2).Value = rng1.Resize(, 2).Value
       .Cells(2, 3).Resize(rng1.Rows.Count).Value = 1000
       End With
     End If
    End If
End Sub
'=============================================================
Sub mk_sample_data()
  With Worksheets("sheet1")
    .Range("a1:c5").Value = _
     [={"ID1","ID2","氏名";"AAA",111,"中田";"BBB", 222,"宮本";"CCC",333,"中村";"DDD",444,"川口"}]
    End With
  With Worksheets("sheet2")
    .Range("a1:d4").Value = _
     [={"年月日","ID1","ID2","料金";"6月1日","AAA",111,6300;"6月3日","BBB",222,3000;"6月5日","CCC",333,4000}]
    .Range("a5:d8").Value = _
     [={"6月7日","AAA",111,9000;"6月10日","CCC",333,4000;"6月12日","BBB",222,8000;"6月20日","AAA",111,7000}]
    End With
End Sub

これで結果を確認してみて下さい。
あくまでも新規ブックで確認して下さい
0 hits

【40481】検索して一致したらデータ入力 06/7/14(金) 15:33 質問
【40486】Re:検索して一致したらデータ入力 ichinose 06/7/14(金) 18:45 発言
【40512】Re:検索して一致したらデータ入力 06/7/15(土) 12:48 質問
【40517】Re:検索して一致したらデータ入力 ichinose 06/7/15(土) 15:10 発言
【40534】Re:検索して一致したらデータ入力 06/7/15(土) 22:37 お礼
【40544】Re:検索して一致したらデータ入力 ichinose 06/7/16(日) 8:56 発言
【40564】Re:検索して一致したらデータ入力 06/7/17(月) 22:14 お礼
【40515】Re:検索して一致したらデータ入力 Kein 06/7/15(土) 13:35 回答
【40520】Re:検索して一致したらデータ入力 06/7/15(土) 18:01 質問
【40562】Re:検索して一致したらデータ入力 kobasan 06/7/17(月) 16:20 発言
【40563】Re:検索して一致したらデータ入力 kobasan 06/7/17(月) 20:53 発言
【40565】Re:検索して一致したらデータ入力 06/7/17(月) 22:26 お礼

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