[[20091007180115]] 『二列あるものの抽出の仕方』(mako) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『二列あるものの抽出の仕方』(mako)

 列A    列B    列C
 1 123-222   123-445  ●
 2 123-654   123-456  ○
 3 123-445   123-222  ○
 4 ・・・    ・・・ 
 5 ・・・    ・・・

 上記のように列ふたつにばらばらにNOが入力されているとき、
 列Aと列Bで同じNOのものだけを抽出させて横にならびかえられる方法を
 教えてください。
 また、抽出する際、列Cと列Bはセットで動かしたいです。
 1の列Cの●は列BのNOのものの確認マークなので列Bと列Cは
 セットになっています。
 宜しくお願いします。


 上記が元データなら
 並べ替え後の結果も載せておきましょう。

 (HANA)

 返信ありがとうございます。
 焦っていて説明がだいぶ不足してました。。。 

 A列の番号(NO)は元データの詳細で、A列〜V列まであるものの一部になります。
 B列とC列は元データのB列に他からもってきたもので元データに挿入しています。
 やりたいことをまとめてみました。

 @元データの番号(A列)と他からもってきたデータ(B列)の番号が一緒のものの
 抽出をしたい。(1000以上の数字のデータになります)
 A抽出をした際、A列とB列の同じ数字同士がとなりになるようにしたい。
 BB列とC列は一緒に挿入しているため、抽出した際、B列とC列は一緒に抽出されたい。

 元データは他の関係者からもらうデータであり、
 自分では他で作成しているエクセルがあるため、元データと自分の作成している番号の
 確認をしたいです 。
 C列はB列の番号のものの確認チェックをしているもので、
 その番号の商品が今どういう状況になっているかを入力しています。
 一日の最後に自分のデータ(B列とC列)を関係者から月初めにもらっているデータに
 挿入し、同じ数字のもののデータを照合したいです。 

 今はA列からC列までしか記載していませんが、データはV列まであります。
 C列のチェック欄によってどれくらいの番号の商品がチェックされているかをみたいです。
 チェックはいろいろあり、チェックされていない番号の商品は空欄ですし、
 ○や△、日付など入力して います。

 うまく説明できないのですが、まずはC列にチェックが入力されているものの抽出をしたいです。
 関数をいれればすぐにできると言われたのですがどうも分からなく、ここで相談させて
 頂きました。 宜しくお願いします。(mako)


 >うまく説明できないのですが
 だから、言葉だけで説明しようとするのではなく
 最初にサンプルデータを載せられたように
 具体的に例を挙げて説明してもらうのが良いと思うのですが。。。

 話しも面倒なので、項目名もつけましょう。
 (実際の項目名である必要は在りません。)
 こちらで何をしたいのか、想像が付きやすいような
 説明になるよう、心がけて頂くのが良いと思います。

 取り敢えず、よく分からないままですが
 ↓のイメージで良いのかな?
	[A]	[B]	[C]	[D]	[E]
[1]	自分のA	Cの値		貰ったA	貰ったC
[2]	123-222	○		123-445	●
[3]	123-654			123-456	○
[4]	123-445	●		123-222	○
[5]	・・・			・・・	
[6]	・・・			・・・	
 でしたらB2に
=IF(COUNTIF($D$2:$D$10,A2)=0,"",VLOOKUP(A2,$D$2:$E$10,2,FALSE))
 ですが?

 (HANA)

 HANAさん何度もすみません。。。
 下記のようにA列は元データで、自分で作成しているデータからB、C列を元データに挿入します。
 A列と挿入したB列の番号がそろっていなく、データも違うものなので記載されていない番号なども
 あります。
 式を入れて、抽出をかけたら右のようにA列とB列の同じ番号のものが揃い、
 抽出したいです。
 NAHAさんが記載して頂いた関数をいれてみましたが、セルに式がのってしまい、
 うまくいきませんでした。。。
 

     列A    列B   列C ・・・   列A    列B   列C 
 ____________________________________ _________________________
  1 123-222   123-445  ●      123-222  123-222  ○
  2 123-654   123-456  ○      123-445  123-445  ● 
  3 123-445   123-222  ○⇒    ______________
  4 ・・・    ・・・          ここより下は空白。
  5 ・・・    ・・・
                                  抽出されたものだけあるようにしたいで す。
 何度も申し訳ありません。アドバイスお願いします。
 (mako)


 A列とB列でマッチングさせて横に並べるのは
 VLOOKUP関数で簡単に出来ると思います。

 ただ
 >抽出されたものだけあるようにしたい
 は、
 >関数をいれればすぐにできる
 まぁ、そう言う関数さえ作ればすぐに出来ますが
 その関数を作るのはちょっとテクニックが要りますよ。

 最後にオートフィルタなどで不要行を非表示にするのでは
 駄目ですか?

 関数でやるなら、まず重複しているA列のデータを抽出し
 それに、C列のデータをVLOOKUP関数で表示する事になると思います。

 データの抽出は↓な感じで
[[20051228215123]]『同じ値のセルの抽出』(トリプルエクセル)
 作業列を使って良いなら、似たような過去ログが見つかりませんが
 ↓な感じ?
[[20090903201835]]『重複データの項目表示について』(初心者)

 ただ、抽出が必要なら、マクロ向きのお話に成ってくると思います。

 (HANA)


 >最後にオートフィルタなどで不要行を非表示にするのでは
  駄目ですか?
 はい。オートフィルタで問題ないと思います。  
 今はまだマクロを使う必要はないと思うのでオートフィルタで大丈夫そうです!

 わたしの場合はA列にある情報とB列にある情報の同じ番号を隣どうしに
 並べ替えたいのですが、
 VLOOKUP関数を使用するにはどういった手順で行えばいいでしょうか?

 先ほどまでいろりろ挑戦してみたのですが、できなく・・・。
 参考の過去ログをみてみましたが、分からなくて、
 わたしの場合は隣の列に抽出するのではないので
 A列とB列の番号が同じものを上から並べ替えたいのですが、
 こういったこともできるのでしょうか・・・。
 (mako)


 まずは、VLOOKUP関数を使える様に成ってください。

 同じ情報を共有出来た方が良いので
 こちらを参考に、VLOOKUP関数を使って
 希望する値を抽出する事を 実際にやってみて下さい。
http://www.excel.studio-kazu.jp/lib/e1tw/e1tw.html

 と言っても、画面に表示されている様に
 同じ位置に同じデータを入力し、
 C3セルに書いてある数式を入れるだけです。

 あとは、B3セルの値を色々変更してみて
 正しいカロリーが参照出来る事を確認して下さい。

 出来ましたら
 1.B6:B10の中からいくつかの品名を選び
   E6セルから下方向へ入力(コピーでも良いですが)
   して下さい。
 2.F6セルに
     =VLOOKUP(E6,$B$6:$B$10,1,FALSE)
   の式を入れて、下にフィルドラッグ
 3.G6セルに
     =VLOOKUP(E6,$B$6:$B$10,2,FALSE)
   の式を入れて、下にフィルドラッグ 
 として下さい。

 B:C列が月初にもらったデータ
 E列が、makoさんが作成したデータ
 F:G列が
 >A列にある情報とB列にある情報の同じ番号を隣どうしに
 >並べ替えた
 状態を想定しています。

 (HANA)


 やってみました!

 >あとは、B3セルの値を色々変更してみて
  正しいカロリーが参照出来る事を確認して下さい。
  →正しいカロリーが参照できました!

 1.2.3の作業をしてみました。
 ただGのセルに#REF!とでてしまいます・・。

  E                F      G
 ポテトチップス	ポテトチップス	#REF!
 チーズあられ	チーズあられ	#REF!
 食パン	食パン	#REF!
 クロワッサン	クロワッサン	#REF!
 バターロール	バターロール	#REF!
 ポテトチップス	ポテトチップス	#REF!
 チーズあられ	チーズあられ	#REF!
 食パン	食パン	#REF!
 クロワッサン	クロワッサン	#REF!
 バターロール	バターロール	#REF!
  
 まだ実際のデータで試してはいないのですが#REF!がでてしまうのを
 確認してから作業に入ろうと思い、先に相談させてもらいました。
 また、A列が月初にもらうデータで、B,C列がわたしが作成したデータになります。 

 (mako)


 。。。。済みません
 私が載せた式が間違えてます。

 ライブラリを参考に、正しい式にして下さい。。。

 (HANA)


    A     B     C       D    ・   ・
 -----------------------------------------------------------------
 1 商品NO   商品NO   確認事項     #N/A
 ----------------------------------------------------------------
 2  1-1         2-3           OK     #REF!
 3  1-2         3-6         確認中     #REF!
 4  1-3         1-2     連絡あり    #N/A 
 5  1-5         1-1     OK       #N/A
 6  2-6         2-5     確認中     #REF!
 ・ 3-6         1-3     確認中     #REF!
 ・ 2-2         3-2     OK       #REF!
 ・ 
 ------------------------------------------------------------------

 上記B、C列は自分で他で作成しているエクセルの一部分をコピーして
 月初にもらうデータのB列に挿入しています。
 なので上記データでいうとA列は月初にもらっているデータになります。

 D列にA列とB列の同じ番号のものを表示させようと
 =VLOOKUP(B2,A2:A200, 2,FALSE)
 の式を入力してみたら#REF!と#N/Aがでてしまいます・・・。
 C列もB列と一緒に移動してもらいたいのですが、まだそこまでいけてないので
 ひとまず同じ番号のだけ並ばせようとしてみたのですが・・・。

 二項目でお世話になっており、大変申し訳ないのです。。。 
 (mako)


 再度書いておきます。
 VLOOKUP関数を使えるようになってください。

 実際の表で試す前に、サンプルデータで試して
 VLOOKUP関数の使い方を習得してください。

 G列の #REF! は出なくなる様に
 正しい式は作れたのですか?

 (HANA)

 すみません・・。下記のようになりました。

        B           C        D       E              F          G  
 -------------------------------------------------------------------
 1
 2
 3      ポテト	   500				
 4
 5       品名	    カロリー				
 6       ポテト	     500		ポテト	     ポテト	    500
 7       チーズ	     200		食パン	     食パン	    300
 8       食パン	     300		ポテト        ポテト	    #N/A
 9       クロワッサン   100		食パン         食パン	    #N/A
 10       バター	     600		クロワッサン   クロワッサン	    #N/A

 C3に=VLOOKUP(B3,B6:C10,2,FALSE)
 F6に=VLOOKUP(E6,$B$6:$B$10,1,FALSE)
 G6に=VLOOKUP(F6,B6:C10,2,FALSE)
 E列の項目をかえるとF列もしたがって同じにかわります。
 G列はなぜか8列目から#N/Aの表示がでてしまいます・・・。
 ここまでどうにか理解できました。
  (mako)


 #N/Aエラーは、検索範囲に検索値が無いときに表示されるエラーです。

 8行目以降の範囲を確認して下さい。
 >G6に=VLOOKUP(F6,B6:C10,2,FALSE)
         この部分/~~~~~~

 こちらもどうぞ。
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040720.html
 エクセルマイスター「絶対参照・相対参照」

 (HANA)

 できました!G6には=VLOOKUP(F8,$B$6:$C$10,2,FALSE)と入力し、下記のように
 なりました!
 これを実際のデータで試してみれば大丈夫ですかね!
 やってみます!

      B           C        D       E              F          G  
 -------------------------------------------------------------------
 1
 2
 3      ポテト	   500				
 4
 5       品名	    カロリー				
 6       ポテト	     500		ポテト	     ポテト	    500
 7       チーズ	     200		食パン	     食パン	    300
 8       食パン	     300		ポテト        ポテト	    500
 9       クロワッサン   100		食パン         食パン	    300
 10       バター	     600		クロワッサン   クロワッサン	    100
 (mako)


 そうですね、まずは実際のデータで試してみて下さい。

 希望するデータが表示出来るようになったら
 実際のデータで#N/A エラーが出るような状況
   検索範囲に検索値が無い場合
 が有る場合は、エラー処理を加えておくのが良いと思います。

 ↓例
 >=IF(COUNTIF($D$2:$D$10,A2)=0,"",VLOOKUP(A2,$D$2:$E$10,2,FALSE))
 私が最初に載せた式です。

 (HANA)


 エラーの解除できました!
 下記のように式をいれてみたのですが、
 私の認識の仕方が間違っていないか確認していただいてもよろしいでしょうか・・?
 すみません。

   A   B     C      D      E
 --------------------------------------------------------
 1502	1542	2009/10/1	 	 
 1503	1549	2009/10/5	   1549	10月5日
 0173	1198	2009/10/5	   1198	10月5日
 1437	1232	2009/10/1	 	 
 1438	1299	2009/10/3	   1299	10月3日
 0169	1299	2009/10/5	   1299	10月3日
 --------------------------------------------------------
 A列→商品コード(元データ)
 B列→商品コード(自分の作成したデータを挿入)
 C列→検品日(自分の作成データを挿入)
 D列→BのコードがAのコードと一致したものの抽出、
 BにあってAにない場合は空白。
 E列→検品日(自分のデータで作成したもの。BとCは連動しています。)  

 ただ、なぜか一番最後の列のコード1299は10/5なのにE列に10/3とでてしまいます。

 D列=IF(COUNTIF($A$2:$A$10000,B2)=0,"",VLOOKUP(B2,$A$2:$A$10000,1,FALSE))
 E列=IF(COUNTIF($A$2:$A$10000,B2)=0,"",VLOOKUP(D2,$B$2:$C$1000,2,FALSE))
 上記の式は  

 ※BとCは同じデータから持ってきているものでコードと日付は連動しており、
 その抽出したコードと同じにE列に日付もくる。 

 B列を基準に抽出しているのでA列にあってB列にないものは抽出されていない。
 この場合の抽出はまた列を増やして式をいれるということでしょうか。
 列が増えていくので、B列のコードがA列にある場合、B列の色が変わるという設定も
 作成してみようと思うのですが、参考ページなど教えていただけますと幸いです。
 どうぞ宜しくおねがいします。

 (mako)


 何がどうなれば良いのか、よく分かりません。

 1.
  ご提示のデータをA:C列に入れて
  D:E列に載せて居られる式を入れても
  書いて居られる結果になりません。
  同じデータを作成し、同じ数式を入れたときに
  同じ結果に成る表を載せて下さい

 2.
  D列は必ずB列と同じデータになるのなら
  不要に思いますが、どうして必要なのか分かりません。

 3.
  そもそも載せて居られるデータが不完全ですから
  意味があることかどうか分かりませんが
  B列の「1299」はキーが重複しています。

 再度書きますが
 最終的にどうなればよいのか分かりませんので
 それで良いのかどうかも分かりません。

 まずは、話の元に出来るようなサンプルデータを載せて下さい。

 (HANA) 

 すみません!再度確認し、下記表を記載し直します。

  A    B            C             D         E
 1111 	1111	2009/10/5 	1111 	10月5日
 1112 	1101	 	 	 
 1113 	1113	2009/10/2 	1113 	10月2日
 1114 	2102	2009/10/3 	2102 	10月3日
 1115 	2100	2009/10/5 	2100 	10月5日
 1116 	2123	2009/10/5 	2123 	10月5日
 1117 	2153	2009/10/6 	2153 	10月6日
 1118 	1115	2009/10/2 	1115 	10月2日
 1119 	1236	2009/10/6 	1236 	10月6日
 2100 	2255	 	 	 
 2102 	2122	2009/10/6 	2122 	10月6日
 2122 	1119	2009/10/6 	1119 	10月6日
 2132 	1117	2009/10/9	      1117 	10月9日
 2164 	1114	2009/10/7	       1114 	10月7日
 2133 	2255	 	 	 
 2153 	1112	2009/10/6	       1112 	10月6日
 2123 	3131	 	 	 
 1236 	2164	2009/10/5	   2164 	10月5日  

 申し訳ありません。再度表を記載いたします。 

 >2.D列は必ずB列と同じデータになるのなら
   不要に思いますが、どうして必要なのか分かりません。
 →これはもともと、他の部署よりデータをもらっていて、
 その一部分が上記表でいいますとA列になります。
 B、C列は自分の部署で作成しているデータであり、
 他部署のデータにコピーをして挿入しています。
 他部署と自分の部署とのデータの出力方法が異なっており、
 うちのデータにあって他部署のデータにないことがあります。 

 他部署のメンバーがうちの出力したデータと見比べ、検品日を把握したいとのことで作成しています。
 なので他部署が一週間ごとに出力しているデータにうちの検品進捗を貼り付けて
 週に1回、B、C列を更新しています。
 他部署のデータ(A列)にあるコードとうちのデータにあるコードが一致したものだけを
 出力したく、D列を作っています。また検品日を把握したいので
 B,C列はペアで動くようにしたいんで す。
 D列が空白の場合はB列にあるコードがA列にないので空白になっています。

 D、E列を作成したのはAとBのコードが一致したものの確認と、
 一致したデータの中で日付が入っているものは検品終了しているという
 確認をしたいので作成しています。

 長文になってしまって申し訳ありません。
 ただ、AとBのコードの一致と検品終了を確認したい進捗表を作成するために作っています。
 (mako)
 

 えっと。。。
 【A,B列の両方に出てくるデータで】と言う前提条件は分かるのですが
 それを
  A列のデータにC列の情報がくっつくのが良いのか
  B:C列の情報の内、A列にある物だけが一覧で表示されれば良いのか
 どちらなんでしょう?

 これをA列のデータを作った人が見るなら A列の順に成っているのが良さそうですし
 B列のデータを作った人が見るのなら、B列の順に成っているのが良さそうです。。。
 (現在は後者かな?)

 この結果と今までの話だけを見ると
 D列に
=COUNTIF($A$2:$A$10000,B2)
 の式を入れてフィルドラッグ後
 オートフィルタを設定して「1以上」の行だけ
 表示させるのでも良さそうに思いますが?

 (HANA)

 ありがとうございます!

 >A列のデータにC列の情報がくっつくのが良いのか
  B:C列の情報の内、A列にある物だけが一覧で表示されれば良いのか
  どちらなんでしょう?
 
 →Bにあるコードの商品を検品した日がとなりのC列にのせているので
 BとCはぺアと考えていて、今はBにあるコードがAにある場合、抽出しています。

 >D列に
 =COUNTIF($A$2:$A$10000,B2)
  の式を入れてフィルドラッグ後
  オートフィルタを設定して「1以上」の行だけ
  表示させるのでも良さそうに思いますが?
 →これもE列の必要がなくなるので提案してみたいと思います!  

 現在は検品が終わっているコードの確認をしているので
 B列の順に成っているのですが、出来たら
 A列の順に成っているようにはしたいと思っています。
 ですが、A列の順に成っているようにすると、
 もしBにあるコードで検品も終了してC列に日付も入力しているコードが
 Aに無かった場合、せっかく検品が終了しているのに、
 抽出されないということになってしまうのが不安です。
 おかしなことを聞いてしまうかもしれませんが、Aを基準に考え、A列にあるコードとB列にあるコードの
 一致したものの抽出と、また、A列にないコードでBにあり、Cに日付が入っているもののコードを
 いっぺんに抽出する方法はありますか? 

 (mako)

 これってもしかして
  向こうから来たデータに検品日を入力するのと
  足りない商品CDは付け加える
 とか言う事ですか?

 それとも、入力等の行為は不要なのでしょうか?

 >現在は検品が終わっているコードの確認をしているので
 この「確認」のイメージが。
 A列のデータの消し込み作業
 とか言う事でも無いのですか?

 >ですが、A列の順に成っているようにすると、
 >もしBにあるコードで検品も終了してC列に日付も入力しているコードが
 >Aに無かった場合、せっかく検品が終了しているのに、
 >抽出されないということになってしまうのが不安です。
 これは、現在(D,E列)でもそうなっていると思いますが?

 (HANA)

 すみません。。
 いろんな意見や要望がありすぎて、再度まとまってからまた、
 相談させていただきます。(><)
 (mako)


  A    B            C             D         E
 1111 	1111	2009/10/5 	1111 	10月5日
 1112 	1101	 	 	 
 1113 	1113	2009/10/2 	1113 	10月2日
 1114 	2102	2009/10/3 	2102 	10月3日
 1115 	2100	2009/10/5 	2100 	10月5日
 1116 	2123	2009/10/5 	2123 	10月5日
 1117 	2153	2009/10/6 	2153 	10月6日
 1118 	1115	2009/10/2 	1115 	10月2日
 1119 	1236	2009/10/6 	1236 	10月6日
 2100 	2255	 	 	 
 2102 	2122	2009/10/6 	2122 	10月6日
 2122 	1119	2009/10/6 	1119 	10月6日
 2132 	1117	2009/10/9	      1117 	10月9日
 2164 	1114	2009/10/7	       1114 	10月7日
 2133 	2255	 	 	 
 2153 	1112	2009/10/6	       1112 	10月6日
 2123 	3131	 	 	 
 1236 	2164	2009/10/5	   2164 	10月5日  

 A列→商品コード(他部署のデータ)
 B列→商品コード(自分の作成したデータを挿入)
 C列→検品日(自分の作成データを挿入)
 D列→B列のコードがAのコードと一致したものの抽出、
 BにあってAにない場合は空白。
 E列→検品日(自分のデータで作成したもの。BとCは連動しています。)  

 やはり、自分で作成したデータを基準に進めていくことになりましたので
 BにあるコードがAにあった場合、D列に抽出するという方法にします。
 この場合下記関数式で間違いないでしょうか?
 D列=IF(COUNTIF($A$2:$A$10000,B2)=0,"",VLOOKUP(B2,$A$2:$A$10000,1,FALSE))
 E列=IF(COUNTIF($A$2:$A$10000,B2)=0,"",VLOOKUP(D2,$B$2:$C$1000,2,FALSE))
 なので、もしAにあるコードでBにない場合は問題ありません。

 また、質問なのですが、
 以前教えていただいた下記の件についてですが、
 >D列に
 =COUNTIF($A$2:$A$10000,B2)
  の式を入れてフィルドラッグ後
  オートフィルタを設定して「1以上」の行だけ
  表示させるのでも良さそうに思いますが? 

 この場合、1を有、0を無と表記させることは可能でしょうか?
 度々の質問で申し訳ありません。
 よろしくおねがいします。
 (mako)


 式は意味を理解するように努めて下さい。
 でもって、身につけて下さい。

 例えばこの式
 >D列=IF(COUNTIF($A$2:$A$10000,B2)=0,"",VLOOKUP(B2,$A$2:$A$10000,1,FALSE))
 COUNTIF($A$2:$A$10000,B2)が「0」の時に「""」と成るので
 >BにあってAにない場合は空白。
 に成ります。

 それ以外のときに「VLOOKUP(B2,$A$2:$A$10000,1,FALSE)」の結果が返されるので
 番号が表示されます。

 それが分かっていれば
 >1を有、0を無と表記させることは可能でしょうか?
 と言った話しには成らないと思います。

 それから、作って居られる数式は
 希望する結果を返すと思いますが
 仕組みとしては遠回りをしていると思います。

 (HANA)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.