質問: エクセルで、データのある行だけを抽出したい。 エクセルのsheet1にデータが入っており、セルが空白でない行のデータのみを、sheet2に抽出したいと思っています。 sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、a~hまでにデータが入っています。 予定を入れる際にはe列には必ず入力をするため、e列が空白でない行のみを抽出したいです。 a|b|c|d|e|f|g|h 月|日|時間|... 11|22|10:00|... 11|22|10:30|... 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したsheet2のi列以降には備考などを入力したいため、やはり後から列がずれると困るため、a~h列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。
回答: 既に回答済みにつき、マクロ例です。 (1)シート1のj1にe列の見出し名、j2に<>を入力 シート2の1行目から表示する為、シート1の空きセルとしていますので 変更する場合、コードのcriteriarange:=sheets("sheet2").range("j1:j2"), を変更して下さい。 (2)シート1タブ上で右クリック→コードの表示→以下のコードを貼り付け このマクロはシート1のイベントプロシージャでe列のセルが変更された場合、 シート2に自動的に貼り付けるようにしています。 ■サンプルコード private sub worksheet_change(byval target as range) if intersect(target, range("e:e")) is nothing then exit sub with sheets("sheet2") .columns("a:h").clearcontents sheets("sheet1").columns("a:h").advancedfilter action:=xlfiltercopy, _ criteriarange:=sheets("sheet1").range("j1:j2"), copytorange:=.range("a1"), unique:=false end with end sub