![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセルの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列に関数を入れておく方法で実行したいと思います。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
最も分かり易く計算にも負担のかからない方法は作業列を作って対応することです。
例えばシート1のJ列を作業列としてJ2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(E2="","",MAX(J$1:J1)+1)
シート2では1行目に項目名が有るとしてA2セルには次の式を入力してH2セルまでオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。
=IF(ROW(A1)>MAX(Sheet1!$J:$J),"",INDEX(Sheet1!$A:$H,MATCH(ROW(A1),Sheet1!$J:$J,0),COLUMN(A1)))
できました!
似たような関数を使っているのを他のページで見て試したのですが、参照範囲などの変更の仕方が間違っているのかうまくいかず…。
困っていたので助かりました。
なぜこのような式になるのかまだ理解できていないので、関数を調べて勉強しようと思います。
ありがとうございました。
No.2
- 回答日時:
既に回答済みにつき、マクロ例です。
(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
ありがとうございます。
VBAは少し本を読んだ程度でまだあまり知識がないのですが、こちらの方法も試してみます。
都度マクロを実行するのではなくて、E列に入力すると自動で貼り付けられるんですね。
フィルタオプションを利用したマクロでは、マクロを実行しなければいけないことと、データがそのたびに上書きされてしまうことから使えないと思ったのですが、このような方法もあるのですね。
勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。特にものすごく怒られたときとか、とんでもない損害を与えてしまったときとか…。
-
セルに値がある行のみを抽出するやり方
Excel(エクセル)
-
excelで、空白を除いてデータを抽出する方法について
Excel(エクセル)
-
エクセル関数で、数字の入った列だけの行を別シートに表示させる。
Excel(エクセル)
-
-
4
エクセルで入力のあるセルのみ別シートに表示したい
Excel(エクセル)
-
5
Excelで記入項目があるところだけ抽出して別シート
Excel(エクセル)
-
6
値が入っているときだけ計算結果が表示されるようにするには・・?
Excel(エクセル)
-
7
エクセルでセルが空白だったらその行を表示させない方法を教えてください。
Excel(エクセル)
-
8
エクセル空白以外の文字を抽出
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マイクロソフト 一時使用コード...
-
ステータスバーの合計に表示さ...
-
あらかじめ用意したテンプレー...
-
会社PCのメールが更新されない
-
英数字のみ全角から半角に変換
-
Outlook で宛先が複数の場合の人数
-
office365って抵抗感ないですか?
-
別シートの年間行事表をカレン...
-
Office 2021 Professional Plus...
-
Outlookで、任意のメールアドレ...
-
Microsoft Officeを2台目のPCに...
-
PDFのハイパーリンクを自動的に変更し...
-
Officeを開くたびの「再起動メ...
-
1つのPCに「Excel 2010」「Exc...
-
マイクロソフト オフィスについて
-
【マクロ】文字を1文字づつ、...
-
Windows 11で、IME言語バー(IM...
-
【Excel VBA】PDFを作成して,...
-
Microsoft Formsの「個人情報や...
-
マクロの書き方を教えて下さい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Officeを開くたびの「再起動メ...
-
英数字のみ全角から半角に変換
-
outlookのメールが固まってしま...
-
大学のレポート A4で1枚レポー...
-
マクロの書き方を教えて下さい
-
エクセルにおいて品名コードを...
-
マイクロソフト 一時使用コード...
-
マクロのコードを教えてください。
-
Microsoft Formsの「個人情報や...
-
一太郎でカーソルを次の行の先...
-
Microsoft365搭載Windows11PCへ...
-
エクセルでXLOOKUP関数...
-
エクセルやワードを無料で使え...
-
会社PCのメールが更新されない
-
teams設定教えて下さい。 ①ビデ...
-
現在、PC2台でMicrosoft 365 Pe...
-
Microsoft365で写真をアルバム...
-
office365って抵抗感ないですか?
-
Outlook で宛先が複数の場合の人数
-
Office2021を別のPCにインスト...
おすすめ情報