|
▼Jaka さん:
>こんにちは。
>昨日は、削除の事は頭が回らなかったと書いたけど、正確には削除の条件を考えるのが面倒だったという事です。
>なんか例題を見てみると、最終的にはSheet2(修正)にメインの使用個数が書き足してあるだけ見たいですが....。
>この線で行くと、マクロなど必要ないように見えますが、
>Sheet2(修正)のセルD2に下記関数を入れ必要な所までフィル。
>=IF(ISNA(VLOOKUP(A2,Sheet1!$A$1:$D$7,4,0)),"",VLOOKUP(A2,Sheet1!$A$1:$D$7,4,0))
>
>Sheet2(修正)のデータ部をコピーして、Sheet1(メイン)のデータ部に値だけ貼り付けでも出来ますけど。
>
>>プログラム解説していただければ
> うまく解説が出来ませんでした。
> 特別難しいことはしてないと思いますから、Match、 Offset、Resizeは、ヘルプを見てください。
>
>>With Sheets("Sheet2")
>Sheet2のA2からA列最終行までのセルを検索値としてループ
>>For Each Cel In .Range("A2", .Range("A65536").End(xlUp))
> Sheet2セルの値と同じ物がSheet1.1列目の何番目にあるかチェック(エクセルのMatch関数を使用)
>> Mct = Application.Match(Cel.Value, Sheets("Sheet1").Columns(1), 0)
>
> 変数MCTがエラーなら(同じ物が無ければ)
>> If IsError(Mct) Then
> Sheet1、A列最終行の次の行の1列から3列分にSheet2の検索値としたセルから3列分値を入れる。
>> Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1).Resize(, 3).Value = _
>> Cel.Resize(, 3).Value
>> Else
> エラーでなければ何行目にあるかMctに行番号が入っているから、
> Sheet1のその行の1列から3列分にSheet2の検索値としたセルから3列分値を入れる。
>> Sheets("Sheet1").Range("A" & Mct).Resize(, 3).Value = _
>> Cel.Resize(, 3).Value
>> End If
>>Next
ご丁寧な回答どうもありがとうございました。
削除・増減については例題が悪くて申し訳ありませんでした
実際は、修正用の表に対してマスター表は+20桁ぐらい
追加していまして、修正用をそのままコピペすると
追加分がずれてしまったりして収拾がつかなくなって
しまうものですから(^^ゞなんとか 表の比較+行の削除
と行の追加を自動化したかったんです。
また、分からない時はいろいろとご教授お願いするかも
しれませんが、宜しくお願いします。
|
|