質問: マクロに関する質問!マクロを初めて数日の初心者です。 マクロに関する質問!マクロを初めて数日の初心者です。 ルーティン業務をなんとかマクロで出来るようにしてみたのですが、、下記2つの作業をどの様にコード(?)で記入すればよいのか分からず、下記のみマニュアルで行うしかない状況です。 実は、昨日もこちらで質問させていただき、皆様からの回答に助けられました。 またお知恵を拝借できればと思います。 質問1.タブ1の、b列及びn列で、下記の条件に該当する行を切り取って、タブ2 の入力がある最終行の次に入力する。 【条件】 b列:_○で終わる もしくは n列:xx、△△と等しい (質問1.とは別の質問です) 質問2.タブ2のb列に順に管理no.が割り振られているのですが、その最後の数字 をチェックし、 タブ1のb列の空欄部分の上から順に、その次の番号から入力する。 【タブ1.イメージ】 a b いちご 332 りんご 400 みかん 空欄 ぶどう 空欄 タブ1.のb列には、タブ2で既に出てきているものに関しては、数値が入力してあ ります。(a列をキーにv-lookup) ひっぱってこれなかったもに関しては、空欄にするようにしてあります。 空欄は、新規の登録という事になるので、最後の管理no.の次の数字から順に割り振 りを行いたいです。 つまり、タブ1.b列の上から順にタブ2.のb列の一番最後の数字の次の値から自 動で入力する様にしたいです。 (例えば、タブ2.b列の最後の数字が432の場合、上記イメージの空欄に、433, 434と割り振る) 可能でしょうか? よろしくお願いします。
回答: このような掲示板では1つのスレッドに関連のない2つの質問をするのはマナー違反です。 また、マクロがご自分である程度理解されていないの、業務で使用すると取り返しのつかないことになるので(マクロで作業したデータはctrl+zなどの操作で元に戻せませんので注意が必要です)、あまりお勧めできません。 さて、質問1ですが、前半の抽出条件のデータをフィルタ操作で抽出する部分ができるなら、問題は別シートの最下行の下のセルに貼り付ける(セルを選択する)部分がわからないということですね。 マクロの記録で、この操作を行う場合は、フィルタしたデータを大きめに選択して「コピー」し(後でセル範囲を編集したほうがよい)、追加するシートの項目名のセル(例えばa1セル)を選択し、ctrl+↓キーで最終行を選択し、「相対参照で記録」をクリックして、1つ下のセルを選択して、「相対参照で記録」を解除して「貼り付け」てください。 この最下行の下のセルを選択する操作を簡略なコードにすると以下のようになります。 range("a1").end(xldown).offset(1, 0).select 2つ目の質問は、マクロで実行するよりも関数だけで対応するほうが良いと思います。 vlookup関数で空白表示している部分を、タブ1のデータ範囲とタブ2の自分より上のセル範囲を対象とするmax関数で最大値を求め、その値に+1する数式にします。 エクセル2007なら以下のような感じの数式になります。 =iferror(vlookup数式,max(タブ1!b:b,$b$1:b1)+1) #エクセルのバージョンによって使える機能や操作方法が異なりますので、質問の際には必ずバージョンを明記するようにしましょう。