
エクセルの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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
Office2021を別のPCにインスト...
-
大学のレポート A4で1枚レポー...
-
マイクロソフト オフィスのサポ...
-
outlookのメールが固まってしま...
-
Microsoft Formsの「個人情報や...
-
エクセル:一定間隔で平均値を...
-
マクロ自動コピペ 貼り付ける場...
-
エクセル 日付順に並べてかえた...
-
エクセルで質問です。 ハイパー...
-
エクセル 同じ数字を他の列に自...
-
会社のTeamsのことで相談です。...
-
【Excel VBA】PDFを作成して,...
-
Excelで〇のついたものを抽出し...
-
別シートの年間行事表をカレン...
-
Excel 日付を比較したら、同じ...
-
web上にあるエクセルをショート...
-
エクセルの貼り付け「リンクさ...
-
office2019 のoutlookは2025年1...
-
Teams内でショートカットって貼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
Office2021を別のPCにインスト...
-
エクセル 同じ数字を他の列に自...
-
エクセルからメールを作れるか...
-
Microsoft365、ページ設定がで...
-
快活CLUBについて 私用で使う書...
-
パソコンWindows11 Office2021...
-
libreoffice calcで行を挿入し...
-
エクセルで質問です。 ハイパー...
-
outlookのメールが固まってしま...
-
Microsoft Formsの「個人情報や...
-
別シートの年間行事表をカレン...
-
Microsoft Formsでクイズの解答...
-
マクロ自動コピペ 貼り付ける場...
-
Excelで〇のついたものを抽出し...
-
Excel 日付を比較したら、同じ...
-
エクセルで特定のセルの値を別...
-
Officeを開くたびの「再起動メ...
-
office2019 のoutlookは2025年1...
おすすめ情報