|
こんにちは。
昨日は、削除の事は頭が回らなかったと書いたけど、正確には削除の条件を考えるのが面倒だったという事です。
なんか例題を見てみると、最終的には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
|
|