質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

3回答

32583閲覧

EXCEL/条件に合致するデータ一覧を別シートに自動更新で抽出したい

howaco

総合スコア14

0グッド

0クリップ

投稿2020/01/28 06:52

編集2020/01/30 06:30

前提・実現したいこと

Excelで、下図のように「優先順位が"高"」のものを別シートのリストに抽出したいと思っています。

"高"は追加で入力すると、自動で「Sheet2」に入力更新されるようにしたいと思い検索しているのですが、データのみを抽出することは出来ても自動更新の方法が分からずなかなか思うようにいきません…。

マクロは触ったことがないですが、自動更新出来るようにしたいのでマクロでの処理を出来ればと思っているのですが、何か良い方法はありますでしょうか?

イメージ説明
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttyp03

2020/01/28 07:15

「データのみを抽出」はどのようにやっているのですか?
howaco

2020/01/28 07:21

データ抽出のみはVLOOKUPを使ったり、「フィルターオプションの設定」で、「リスト範囲」「検索条件範囲」「抽出範囲」を指定するやり方でやっていました。
yuuskeccho

2020/01/28 07:26

関数ではできないので、VBAでマクロを作成するかテーブルに変換してPowerQueryで抽出したらいかがですか? PowerQueryの場合、一旦抽出すれば任意で更新か○分間隔または開いたときに更新ができると思いますが。
howaco

2020/01/30 06:41

>Yuusukecchoさん ご回答ありがとうございます!知識不足で申し訳ないのですが、PowerQueryを使わなかった場合は自動更新出来ないということでしょうか?
yuuskeccho

2020/01/30 07:53 編集

”自動更新”の解釈が人によって少し違うかもしれませんが、関数や数式であればセルの値が変化したタイミングで勝手に結果が更新されます。それは”自動更新”だと思います。あと、セルの値が変化したときにマクロを動かす、というのも”自動更新”だと思います。 ただ、PowerQueryはセルの値が変化しても○分間隔で更新する設定をした場合にその”○分”が経過するまで更新されなかったりします。あとは任意で更新ボタンをクリックするかどうかになるので、”自動更新”という解釈とはまた違うのではないかと思います。 今回は関数を使わないという前提にした場合、”自動更新”を目指すのであればセルの値が変化したときに動くマクロを作成するか、PowerQueryで抽出しておいてセルの値が変わった場合にその抽出結果を更新させるようなマクロを作る、という方法が挙げられるのではないかと思います。
howaco

2020/01/30 08:16

ご丁寧なご回答、ありがとうございます!今回は質問文に表記の通り、優先順位の列に「高」を追加したら自動で別シートに追加されるようにしたいので、関数ではなくマクロでの作成を考えてみます。
yuuskeccho

2020/01/30 08:23

因みにマクロは一から作るのではなく、最初は自動記録機能を使って、意味をある程度理解しながら自分で補足していくだけで構わないと思います。 その時に coco_bauerさん が既に回答されている方法を使うことになりますので、参考にして下さい。
guest

回答3

0

ベストアンサー

Sheet1に作業列を使うことはできるでしょうか。
OKであればF3以下に以下の式を入れてください。

Excel

1=IF(D3="高",COUNTIF($D$3:D3,"高"),0)

Sheet2のA3には以下の式を入れてE列までと、行数は適当数コピペしてください

Excel

1=IFERROR(INDEX(Sheet1!A:A,MATCH(ROW()-2,Sheet1!$F:$F,0)),"")

書式を同じものにするためには、条件付き書式を用います。
「D列に値がある場合」、などやりやすい方法でお試しください。


作業列はSheet2にしても問題なかったですね。
そうすればSheet1に作業列は不要です。
ご希望があればお知らせください。
※当初の質問内容に沿って数式で対応していますが、もちろんマクロも便利です。

投稿2020/02/03 03:57

編集2020/02/03 23:46
radames1000

総合スコア1923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

howaco

2020/02/05 02:51

ご回答いただきありがとうございます!こちらの方法を試したところ、思い通りの形になりました! こちらのご回答をベストアンサーにさせていただきます。ありがとうございました!
howaco

2020/02/06 01:25

恐縮でございますが、一つだけ質問させていただきたいです(>_<) こちらの関数を利用したところ、ファイルサイズが倍程増え、作業中はそこまで問題はないもののやはり少し動作(特に保存時)が重くなってしまいます。 これはマクロを使った方が軽くなるものなのでしょうか? 初歩的な質問で大変恐縮なのですが、もしよろしければご回答いただけると幸いです。
radames1000

2020/02/06 01:32

ファイルサイズは数式の数だけ増えますし、 それに伴いどうしても重くなってしまいます。 ですので、ご認識の通りマクロを使った方が動作は軽くなりますね。 ぜひぜひマクロを勉強なさってみてください。
howaco

2020/02/14 01:07

お返事遅くなり失礼しました。ご返信いただきありがとうございます! 軽くするにはやはりマクロが必要になってくるのですね。この機会に勉強してみようと思います。 ご丁寧なご回答、ありがとうございました!
guest

0

無理やりやるならこんな感じでしょうか。
F列はワークエリアです。非表示にしておいてください。
F2は「1」を初期値で入れておいてください。
3行目を4行目以降に適当数コピペしてください。

ABCDEF
1企業リスト
2会社名エリア優先順位担当1
3=IFNA(INDIRECT("Sheet1!B"&$F3),"")=IFNA(INDIRECT("Sheet1!C"&$F3),"")=IFNA(INDIRECT("Sheet1!D"&$F3),"")=IFNA(INDIRECT("Sheet1!E"&$F3),"")=MATCH("高",INDIRECT("Sheet1!D"&F2+1&":D"&(MAX(Sheet1!A:A)+3)),0)+F2

注意
行数はコピペする行数に限定されます。
罫線などの書式はコピーできません。
行数によっては重いかも。
Sheet1のA列には番号を正しく連番で入れておいてください。

結論
マクロでやるのが無難ですね。

投稿2020/01/28 07:56

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

howaco

2020/01/28 08:01

ご回答いただきありがとうございます。 関数でのやり方も教えていただきありがとうございます!でもやっぱり他の方もおっしゃっているように、マクロでやる方が無難なのですね… マクロでのやり方ももう少し調べてみます!
guest

0

Sheet1(データを入力するシート)に、”Worksheet_Change”イベントを設定すると、Sheet1のセルに変更が加えられた時(例えば、D列のセルに"高"と入力された時)にプログラムを自動的に実行することができます。

詳しいやり方は、Excel VBA:特定のセルの値が変更されたとき(更新後処理イベント)だけVBAのプログラムを実行する方法 のページなどを参考にしてください。

投稿2020/01/28 07:21

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

howaco

2020/01/28 07:59

ご回答ありがとうございます。 マクロは難しそうで今まで使ったことがなかったのですが、この場合はマクロの方が良さそうですね。この機会に勉強してみます(>_<)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問