Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
一覧のシートから月ごとでシートを分けたい
投稿日時: 25/07/17 15:15:08
投稿者: ふしぎちゃん

お世話になります。
 
あるアプリからCSVで抽出したものを
年度を関係なしに、その時期に施工した日を
シートごとに表示したい。
 
 
<貼り付けシート>
   A       B      C      D
1 施工日   顧客名   作業内容  現場住所 …
2 2021/4/5   あ     ××    〇〇市
3 2023/3/15   い     ××    ▲▲市
4 2022/4/3   う     ■■    ▲▲市
5 2024/5/2   お     ■■    〇〇市
6 2024/12/3

 
<4月>〜<3月>のシートを作成する
 
<4月>
   A       B      C      D
1 施工日   顧客名   作業内容  現場住所 …
2 2021/4/5   あ     ××    〇〇市
3 2022/4/3 う     ■■    ▲▲市
4 …
5 
6 
 
のように、月に応じたリストを作りたいです。
 
((失敗した関数))
<貼り付けシート>の
最終列(AN列)に
=IF(A2="","",(MONTH(A2)))
で月だけを出して
 
<4月>のシートで
   A       B      C      D
1 抽出月     4   
2 施工日   顧客名   作業内容  現場住所 …
3 
4
5
 
として、
=INDEX(貼り付けシート!A:A,MATCH($B$1,貼り付けシート!$AN:$AN,))
としてA3列から最終列にして
下へコピーしましたが
最初に該当するものしか引っ張ってこれないので
同じ内容が並ぶだけです。
何か方法がないかを検討しましたが
方法が見つかりません。
 
何か良い方法はないでしょうか?
 
よろしくお願い致します。

回答
投稿日時: 25/07/17 17:15:43
投稿者: んなっと

     A    B     C     D
1  抽出月    4          
2  施工日 顧客名 作業内容 現場住所
3 2021/4/5   あ   ××  〇〇市
4 2022/4/3   う   ■■  ▲▲市
 
A3
=IFERROR(INDEX(貼り付け!A:A,AGGREGATE(15,6,ROW($2:$500)/(MONTH(貼り付け!$A$2:$A$500)=$B$1),ROW(A1))),"")
右方向・→下方向・↓

回答
投稿日時: 25/07/18 00:37:51
投稿者: Mike

 Sheet: Paste
   A    B    C    D
1 施工日   顧客名 作業内容 現場住所
2 2021/04/05 あ   ××   〇〇市
3 2023/03/15 い   ××   ▲▲市
4 2022/04/03 う   ■■   ▲▲市
5 2024/05/02 お   ■■   〇〇市
6 2024/12/03
 
 Sheet: April
   A    B    C    D   E F
1 施工日   顧客名 作業内容 現場住所
2 2021/04/05 あ   ××   〇〇市   TRUE
3 2022/04/03 う   ■■   ▲▲市
 
Aprilシートにおいて、
セル F1 は空白のままの放置プレーに徹します。
セル F2 に式 =MONTH(Paste!A2)=4 を入力
[データ]⇒[並べ替えとフィルター <詳細設定>]⇒表示された[フィルターオプションの設定]
メニューにおいて、“指定した範囲”に目玉入れ⇒[リスト範囲]ボックス内にマウスカーソルを
放り投げ⇒Pasteシートをアクティブにして、範囲 A1:D6 を撫で撫で(→当該ボックス内には
Paste!$A$1:$D$6 が表示)⇒[検索条件範囲]ボックス内にマウスカーソルを放り投げ⇒
Aprilシートの範囲 F1:F2 を撫で撫で⇒[抽出範囲]ボックス内にマウスカーソルを放り投げ⇒
Aprilシートの範囲 A1:D1 を撫で撫で⇒最後に[OK]を憎々し気に「エイヤッ!」と叩き付け
オ・シ・マ・イ

投稿日時: 25/07/18 09:49:49
投稿者: ふしぎちゃん

んなっと さん
Mike さん
 
有難うございます。
 
Mike さんの投稿頂いた内容ですると
確かにできました。
なぜ、できるのか不思議で
書かれていた通りするとでてくるので
驚きでした。
ただ、5月、6月、12月…とそれぞれでするのが
大変なので、できれば
 
んなっと さん
の関数で進めていきたいと考えています。
 
<貼り付けシート>は、2000行ある場合もあり
今回教えていただいたものを実行すると
59行目以下が
最初の抽出したものとなり
それ以降がループになります。
=IFERROR(INDEX(貼り付け!A:A,AGGREGATE(15,6,ROW($2:$2000)/(MONTH(貼り付け!$A$2:$A$2000)=$B$1),ROW(A1))),"")
とするのかと思いましたが、
結果が同じでした。
 
どうすればできるようになりますでしょうか?
よろしくお願い致します。

回答
投稿日時: 25/07/18 10:18:22
投稿者: んなっと

もう一度落ち着いて新規作成してみましょう。

回答
投稿日時: 25/07/18 11:24:30
投稿者: Suzu

引用:
ただ、5月、6月、12月…とそれぞれでするのが 大変なので

 
んなっと さん の方法は
4月分を作ってしまえば、そのシートをコピーしてセルの値を変えれば済みます。
 
Mike さん の方法でも
セル F2 の =MONTH(Paste!A2)=4 この末尾の「4」が月の抽出条件ですから
セルに値を置き、そのセルの値を 参照するようにすれば、すべての数式ではなく、
「4」を参照している簡単です。セルの値を変えれば良い様になります。
 
 
また、作るのが 簡単 だから だけ で 手法を決めない方が良いです。
関数という事は、ブックを開くたび、セル値が入れられるたびに再計算が行われます。
(セルに なので、1行の全データが入れ終わらなくとも、1列ごとに再計算が実施されます)
 
対して、フィルターは、フィルター操作を行った際に 行われます。
ブックを開いたとき、データが入力されたとき に 実行はされません。
 
データが多くなったりすると、ブックを開く事も含め重く感じる可能性があります。
再計算については、自動ではなく、手動にしてしまえば、再計算を命令したときだけ計算が実施されます。
 
 
CSVのデータとの事ですので、そのデータを取り込んだ時にだけ 仕訳ければ済みます。
どちらの方法を採るのか、『つくりやすい』だけの視点で決めない様にした方が良いと思います。

投稿日時: 25/07/18 12:36:50
投稿者: ふしぎちゃん

みなさん有難うございます。
 
んなっと さん
のをもとに、色々考えましたが
どうしても、途中でとまるのが
解決できませんでした。
 
Mike さんのやり方で
表を作り上げ行きます。
 
有難うございました。