
エクセルの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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Excel(エクセル) 日付以外のデータを抽出したいのですが、 6 2023/06/27 13:32
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
快活CLUBについて 私用で使う書...
-
Microsoft Officeを2台目のPCに...
-
別シートの年間行事表をカレン...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
エクセルで特定のセルの値を別...
-
MSオフィス2013にMS365が上書き...
-
大学のレポート A4で1枚レポー...
-
エクセルVBAで1004エラーになり...
-
Office 2021 Professional Plus...
-
excel2010の更新プログラムにつ...
-
office365って抵抗感ないですか?
-
Microsoft Office Homeインスト...
-
エクセル:一定間隔で平均値を...
-
Officeを開くたびの「再起動メ...
-
マクロ自動コピペ 貼り付ける場...
-
outlookのメールが固まってしま...
-
別ブックへのエクセルマクロの...
-
Microsoft365搭載Windows11PCへ...
-
Excel テーブル内の空白行の削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
Office2021を別のPCにインスト...
-
大学のレポート A4で1枚レポー...
-
Microsoft365について
-
outlookのメールが固まってしま...
-
英数字のみ全角から半角に変換
-
Office 2021 Professional Plus...
-
エクセルVBAで1004エラーになり...
-
エクセルで特定のセルの値を別...
-
MSオフィス2013にMS365が上書き...
-
Microsoft Formsの「個人情報や...
-
【Excel VBA】PDFを作成して,...
-
別シートの年間行事表をカレン...
-
office2019 のoutlookは2025年1...
-
マクロ自動コピペ 貼り付ける場...
-
表の作成について
-
office365 回復できない。
-
マイクロソフト 一時使用コード...
-
Teams内でショートカットって貼...
-
Microsoft Office Homeインスト...
おすすめ情報