Excel VBA質問箱 IV

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

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


9883 / 76734 ←次へ | 前へ→

【72407】Re:再:2つのシートのデータを照合し列が一致したら転記したい
質問  kiki  - 12/8/7(火) 20:48 -

引用なし
パスワード
   UO3 さん

お返事ありがとうございます。

私の最初の質問が悪く皆さまにお手数お掛けして申し訳ございません。
(当初は私も仕様をきちっと理解していませんでした)
下記にコード等記載致しました。

どなたか見て頂き添削頂けますと幸いです


長文失礼致します。
下記コードを掲載致しますので、大変お手数ですがコードの添削とやりたいことをするには今後どこをどう変更していったらよいかご指導をお願い致します。

過去の質問でシート1とシート2と名称を付けていましたが、わかりにくいため、マクロを設置し抽出キーを入力するものを「表」シート、読み込むデータが入力されているものを「データ」シートと表現を変更させていただきます。また、多少仕様変更となりまして過去ご回答頂いた皆さまには申し訳ございませんが、こちらの
質問内容においてご指導頂けますと助かります。

前提条件
・表シートに記載のあるC列記載のキーとデーターシートのA列記載のキーで一致させ、一致した場合にデータシートの一部を表シートのセルO列からAH列までに転記したい。
・表シートはC5セルから、C80くらいまでに抽出キーとするキーを入力出来るフォーマットで、C列からAH列まで横に伸びていますが、転記先の場所はOからAH列です。D〜N列は他のデータを入力予定ですが、抽出した後のことです。。
・表シートはセルの結合がされており、C5とC6が結合され同じようにAHまで2行づつ結合されています。
・表シートC列に記載するキーは例えば、AAAというキーとすると1件しか入れる予定はありません。結果として2件抽出されることはありますが。基本的には表シートにはAAA、BBBというようにユニークな番号を入れる予定です。(とういか、事前にAAAが複数あるか把握できないため)
・データシートは毎回データ数が変更となりますが、千件くらいの予想です。データ内には日付や金額、ブランク、0といった数値も記載されています。
・データシートの一行全てを転記するわけではないですが、恐らくA列と最右端から5列を除いて全て転記とかそういうものです。転記データにもブランクは入りますが、右端は0か金額かどちらかが入っている。
・また、データシートA列には同じキーが複数ある。1件の場合もあるし、AAAというキーが2件、3件とあることもある。恐らく最大でも4、5件かと思われます。
・データシートA列に複数同じキーとなっている場合には私の方の前段階でソートし昇順で並び変えをしてまとまっています。


質問1.表シートにキーワードをなる番号をC列に入力し、データシートから転記したいのですが、表シートC5にAAA、C7にBBBと記載して検索した際にはAAAが2件出てくるとしますと、私の記載のコードではAAAが2件あれば、O5の行へ1件、O7の行へ1件と転記されます。(セルはC5とC6が結合、右も同様に2行づつ結合され、下へ続いています。)
するとC列のC7にはBBBが記載されているのに右のO7はAAAのデータでずれてしまいます。これを、なんとか複数件検索転記する場合にはC列のBBBを下に1行ずらしてC9に入り、隣にBBBのデータを転記できないでしょうか?もし不可能であれば、抽出した2件目以降はAH列の右に追加したいのです。3件目があればさらに右へ。

質問2.上記のずらす処理が出来た場合、C7が空欄になってしまいます。複数件を転記しずらした場合にはC7にもAAAを記載できるようにできないでしょうか?例えば、上の値と同じ値を入れる等・・・。

質問3.表は日々更新して蓄積する予定です。そのため、読み込むファイルも日々更新し、異なる可能性があります。例:前日読み込んだファイルにはAAAが入っていたが今日は入っていないなど。
既存に入力してある番号(項目転記済)のものは読み込んだデータファイルに同番号があり、追加や変更があれば追記しますが、ないかまたは更新されていなければ何もせずに既存データはそのままで新規のデータのみ追加で転記していきたいです。
このようにするにはどうしたらいいでしょうか?私のコードですとAAAがC5で既存で表にあるとして、今回C7にCCCのデータを追加した場合でも書き換えてはいけないAAAの情報O5のところへ転記してしまうのです・・・。自分でそういうコードにしてしまったわけですが。


結合セルもあったりして、これらを解決する方法が全くわからず、ここ数日ずっと悩んでいます。VBAを始めて1週間ほど。本やネットで勉強しかき集めたおかしなコードかと思われますが、見て頂けますと本当に助かります。宜しくお願い致します。


Sub マッチング()
  Dim 検索範囲 As Range, 該当セル As Range
  Dim 検索開始行 As Long, 転記先行 As Long
  Dim r As Range
  
  転記先行 = Worksheets("表").Range("O5").Row '「転記先行」は(表)シートのO5セル以下を代入
  Worksheets("表").Activate '(表)シート選択
  
  For Each r In Worksheets("表").Range("C5:C55") '(表)シートのセルC5からC55までの列をrに代入し下記処理実行
  
  Set 検索範囲 = Worksheets("データ").Range("A2").CurrentRegion.Columns(1) '検索範囲には(データ)シートのセルA2を含めた表のA列を代入
  
  Set 該当セル = 検索範囲.Find(what:=r.Value, lookat:=xlWhole) '該当セルには検索範囲からrを完全一致で検索し見つかった値を代入
  
  If Not 該当セル Is Nothing Then '該当セルが見つかった場合は
  検索開始行 = 該当セル.Row '検索開始行に該当セルの番号を代入
  
  Do
  
  Cells(転記先行, 15).Value = 該当セル.Offset(0, 1).valuee '転記先行の15列目のセルに該当セルの1列右のセルの値を代入
  Cells(転記先行, 16).Value = 該当セル.Offset(0, 2).valuee '転記先行の16列目のセルに該当セルの2列右のセルの値を代入
  Cells(転記先行, 17).Value = 該当セル.Offset(0, 3).valuee '転記先行の17列目のセルに該当セルの3列右のセルの値を代入
  Cells(転記先行, 18).Value = 該当セル.Offset(0, 4).valuee '転記先行の18列目のセルに該当セルの4列右のセルの値を代入
  Cells(転記先行, 19).Value = 該当セル.Offset(0, 5).valuee '転記先行の19列目のセルに該当セルの5列右のセルの値を代入
  以下続き
  Cells(転記先行, 35).Value = 該当セル.Offset(0, 21).valuee '転記先行の35列目のセルに該当セルの21列右のセルの値を代入

  転記先行 = 転記先行 + 2 '転記先行に2を加算する。表のシートが結合しているため1だとつまってしまう
  
  Set 該当セル = 検索範囲.FindNext(after:=該当セル)   '検索範囲の検索を該当セルの次のセルから再開
  
  Loop While 該当セル.Row <> 検索開始行    '最初に検索された該当セルの行が再検索されるまで処理
  
  End If
  
  Next r
  
  Set 検索範囲 = Nothing
  Set 該当セル = Nothing
    
End Sub
9 hits

【72393】2つのシートのデータを照合し列が一致したら転記したい kiki 12/8/1(水) 23:50 質問
【72394】Re:2つのシートのデータを照合し列が一致... UO3 12/8/2(木) 10:12 発言
【72396】Re:2つのシートのデータを照合し列が一致... kiki 12/8/2(木) 22:12 発言
【72395】Re:2つのシートのデータを照合し列が一致... ドカ 12/8/2(木) 14:28 回答
【72397】Re:2つのシートのデータを照合し列が一致... kiki 12/8/2(木) 22:17 お礼
【72400】再:2つのシートのデータを照合し列が一致... kiki 12/8/6(月) 22:07 質問
【72401】Re:再:2つのシートのデータを照合し列が一... UO3 12/8/7(火) 6:23 発言
【72407】Re:再:2つのシートのデータを照合し列が一... kiki 12/8/7(火) 20:48 質問
【72420】Re:再:2つのシートのデータを照合し列が一... UO3 12/8/8(水) 21:02 発言
【72427】Re:再:2つのシートのデータを照合し列が一... kiki 12/8/8(水) 22:21 お礼
【72402】Re:再:2つのシートのデータを照合し列が一... UO3 12/8/7(火) 6:36 発言
【72403】Re:再:2つのシートのデータを照合し列が一... UO3 12/8/7(火) 6:39 発言
【72404】Re:再:2つのシートのデータを照合し列が一... ぶらっと 12/8/7(火) 10:09 回答
【72409】Re:再:2つのシートのデータを照合し列が一... kiki 12/8/7(火) 20:54 お礼
【72405】Re:再:2つのシートのデータを照合し列が一... kanabun 12/8/7(火) 14:25 発言
【72411】Re:再:2つのシートのデータを照合し列が一... kiki 12/8/7(火) 22:25 お礼
【72410】再:2つのシートのデータを照合し列が一致... kiki 12/8/7(火) 21:11 質問
【72412】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 12:51 発言
【72413】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 13:34 発言
【72414】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 14:34 発言
【72415】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 14:46 発言
【72416】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 17:07 発言
【72418】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 17:17 発言
【72419】Re:再:2つのシートのデータを照合し列が... kiki 12/8/8(水) 20:41 質問
【72422】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/8(水) 21:10 回答
【72426】Re:再:2つのシートのデータを照合し列が... kiki 12/8/8(水) 22:13 お礼
【72430】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/9(木) 14:26 発言
【72437】Re:再:2つのシートのデータを照合し列が... kiki 12/8/9(木) 23:21 お礼
【72439】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/10(金) 9:18 発言
【72421】Re:再:2つのシートのデータを照合し列が... kiki 12/8/8(水) 21:06 質問
【72431】Re:再:2つのシートのデータを照合し列が... kanabun 12/8/9(木) 14:42 発言
【72438】Re:再:2つのシートのデータを照合し列が... kiki 12/8/9(木) 23:22 お礼

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