• ベストアンサー

EXCELで表を抽出する

・A列に日付、B列に件名を入力した表があります。 ・A列の日付は、ランダムに、繰り返し現れます。 この表から、たとえば7月だけの、A列に日付、B列に件名の表を抽出する場合、 手動でする場合は、最初の表を日付順にソートし、黙視で7月分をコピーし、別表に貼り付ける、というやり方でできますが、 数式や関数で自動的にやる方法はないでしょうか? マクロが必要になりますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは お望みの回答なのかどうか、あまり自信がありませんが、次のような式を考えてみました。 2行目から入力されてるとします。 入力シートのC列に、=IF(MONTH(A2)=7,MAX(C$1:C1)+1 の作業セルを作成して下の入力されてる行までコピーし、目的の7月の場合に番号を入れます。C1は空白にしないとエラーになりますから注意。 いろんな月を検索するのであれば、例えばD1に取出す 月を入れるようにし、式の中の 7は$D$1とした方が いいと思います。 次にSheet2の2行目から表示させ、100行まであるとして A列の2行目から 1~ の番号を入力しておきます。 B2 に =DAY(INDEX(Sheet1!$A$2:$C$100,MATCH($A2,Sheet1!$C$2:$C$100,0),1)) C2 に =INDEX(Sheet1!$A$2:$C$100,MATCH($A2,Sheet1!$C$2:$C$100,0),2) このB2,C2を下にコピーしてOKです。 D列に =MATCH($A2,Sheet1!&C$2:$C$100,0)の 作業列をつくれば、MATCH関数のところは D2で いいはずですね。 的外れの回答でしたら無視してください。

kt1
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなり申し訳ございません。 のぞんでいることができそうです。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

回りくどいですが関数でできます。 年月を取り出した列を作ります。 別列にCOUNTIF関数を使って、自分の行までで数えて同じ月分で上からの何番目かを番号を振ります。 別シートに移って、そのシートの第1行目は上記の1番目を、2行目は2番目を持ってきます。OFFSET関数などを使う。 似た実例は私の過去回答に沢山あります。本日の質問の中で日付順ソートなども回答しましたが、似た問題です。 よければ見てください。imogasiのところをクリックしていただければ、上記例は2、3問前に出てきます。 これらは値しかもってこれません。書式などは無理です。

kt1
質問者

お礼

ご回答ありがとうございます。 お礼が遅くなり申し訳ございません。 大変参考になりました。

  • pascal01
  • ベストアンサー率28% (18/63)
回答No.1

2つのブックを作って、1つをデータのリスト。 もう1つをデータの結果とします。 データの結果のシートで、[データ]の[外部データ..]の[新しいデータベース..] を選択して、データのリストを指定すれば、ソート&コピーがブックに関数として埋め込まれます。もちろんマクロも使うことはできますが、この方法が自動化業務には向いています。 また、単純に7月だけを抽出するならば、データのフィルタ機能を使えば簡単にできます。ただしこちらはデータの並び替えはしてくれません。 したがって、自動処理が重要なのか、手軽さが重要なのかによって回答が違うのでもう少し補足されたほうがいいと思います。

kt1
質問者

お礼

ご回答ありがとうございました。 お礼が遅くなり申し訳ございません。 自動処理を重視しています。

関連するQ&A