• 締切済み

エクセルデータの抽出について

ご教授下さい。。。。 管理番号 日付    移動先 移動先詳細 移動先詳細(2) 移動区分 ・ ・ K001 2013/4/1 AAA  1234   1     出庫 K002 2013/4/5 ZZZ   -      -     入庫 K001 2014/5/1 ZZZ   -      -     入庫 K001 2014/5/5 BBB  1244  3     出庫 K003 2013/6/1 CCC  1266  2     出庫 ・ ・ 上記のデータから以下のように最新データを表示するようにしたい 管理番号 日付    移動先 移動先詳細 移動先詳細(2) 移動区分 K001 2014/5/5 BBB  1244  3     出庫 K002 2013/4/5 ZZZ   -      -     入庫 K003 2013/6/1 CCC  1266  2     出庫 完全にお手上げです。 どなたか宜しくお願いいたします。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>上記のデータから以下のように最新データを表示するようにしたい 処理の条件で明示されていない部分を確認します。 1.管理番号はどのように処理したいですか?  例1.元データから抽出して単一化する。  例2.予め手動入力する。 2.日付は順番に並んでいないようですが、並び替えは可能ですか? 3.管理番号に対して最新日付のデータのみ抽出すれば良いですか? 上記の項目を補足してください。 尚、質問が1つのシート作成を丸投げしているようです。 できれば自分なりの処理を手掛けた数式について添削を求める形で質問されるよう心掛けるとあなたの応用力が高まると思います。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

関数だけですべての項目を自動抽出したいなら以下の数式を入力することになります。 重複のない管理番号をJ2セル以下に表示するには、J2セルに以下の数式を入力し下方向にオートフィルします(500行目までのデータの場合)。 =INDEX(A:A,SMALL(INDEX((MATCH($A$2:$A$500&"",$A$2:$A$500&"",0)<>ROW($A$2:$A$500)-1)*1000+ROW($A$2:$A$500),),ROW(A1)))&"" 日付欄のK2セルには以下の式を入力し、右方向および下方向にオートフィルします。 =IF($J2="","",INDEX(B:B,MAX(INDEX(($A$2:$A$500=$J2)*ROW($A$2:$A$500),)))) 日付の列は表示形式を日付にしてください。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ご相談の状況がよくわかりませんがとりあえず簡単な方法として、いま管理番号(今回はK001からK003まで)は既知であるとします。 シート2のA2以下に K001 K002 K003 K004 : と、順序良く列記します。シート1に今たまたま該当の番号が無い場合も、あるかもしれません。 シート1がAからF列まで使っているとすると、 G2: =IF(COUNTIF(A:A,A2)=COUNTIF($A$2:A2,A2),A2,"") と記入、以下コピーすると、各管理番号の最後の行に管理番号が現れます。 シート2のB2には =IF(COUNTIF(Sheet1!$G:$G,$A2),INDEX(Sheet1!B:B,MATCH($A2,Sheet1!$G:$G,0)),"") と記入、右に下にコピーすることで、各番号の最後のデータが並びます。 #参考 ご利用のエクセルのバージョンが書かれていませんが、エクセル2007以降を使う事で、もうちょっとだけ簡単な数式で作成できる場合もあります。ご相談投稿では、普段あなたがご利用のソフトのバージョンまでキチンと明記する事を憶えて下さい。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 ↓の画像で上側が元データのSheet1で下側のSheet2に表示するとします。 両Sheetとも1行目項目は入力済みだとして、 Sheet1に作業用の列を1列設けます。 画像では作業列G2セルに =IF(A2="","",IF(B2=MAX(IF(A$2:A$1000=A2,B$2:B$1000)),COUNTIF(A$2:A$1000,"<"&A2)+COUNTIF(A$2:A2,A2),"")) これは配列数式になってしまいますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → G2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをフィルハンドルでずぃ~~~!っと下へコピーしておきます。 次にSheet2のA2セル(配列数式ではありません)に =IF(COUNT(Sheet1!$G:$G)<ROW(A1),"",INDEX(Sheet1!A:A,MATCH(SMALL(Sheet1!$G:$G,ROW(A1)),Sheet1!$G:$G,0))) という数式を入れ、列・行方向にオートフィルでコピー! 最後にB列の表示形式を 日付 にすると 画像のような感じになります。 ※ とりあえずSheet1の1000行目まで対応できる数式にしていますが、 配列数式はPCにかなりの負担をかけますので、データ量が極端に多い場合は 作業列をもう1列増やすなりの方法を考える必要があります。 (3000行程度であれば大丈夫だと思います)m(_ _)m

関連するQ&A

専門家に質問してみよう