[[20060121122823]] 『抽出』(初心者さん) ページの最後に飛ぶ

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

 

『抽出』(初心者さん)

初めてお世話になります.

<シート1>

  A   B   C   D

1 *  A社

2 *  B社

3 *  C社

4 *  A社

5 *  D社

6 *  B社

7 *  B社

8 *  A社

9 *  C社

10 *  A社

11 *  D社

という具合にシート1のB列にランダムに会社名が入ります.これをシート2のA1から下へシート1に出現した会社名をリスト化したいのです.シート2のA1には何を入れてコピーしたらいいのでしょうか.よろしくお願いいたします. 

<シート2>

  A

1 A社

2 B社

3 C社

4 D社


 こんな方法は如何でしょう?

 ・フィルタオプション案
 <シート1>に見出しを付ける
     A   B 
 1 ○○ 社名  
 1 *  A社
 2 *  B社
 3 *  C社
 4 *  A社
 5 *  D社
 6 *  B社
 7 *  B社
 8 *  A社
 9 *  C社
10 *  A社
11 *  D社

 データ → フィルタ → フィルタオプションの設定
 「指定した範囲」にチェック
 「抽出範囲」を適当な所のセル
 「重複するレコードは無視する」にチェックを入れてOK
 出てきたものを シート2 にコピペ

 ・計算式案
 シート1
 C2 =COUNTIF($B$2:B2,B2)
  必要範囲まで下にコピペ

 シート2
 A1 =IF(COUNTIF(Sheet1!$C$2:$C$12,1)<ROW(A1),"",
      INDEX(Sheet1!$B$2:$B$12,SMALL(IF(Sheet1!$C$2:$C$12=1,ROW($A$1:$A$11),""),ROW(A1))))
 ↑配列数式
  上記数式を入力(コピペ)後、Ctrl + Shift + Enter で確定
  { 数式 }になればOK
 必要範囲までコピペ

 ※範囲は、例題に合わせてあります。
  実際のシートに合わせてください。

 (キリキ)(〃⌒o⌒)b


 ◆関数による方法です!

 ◆Sheet1
 	A	B	C
 1	○	社名	
 2	*	A社	2
 3	*	B社	3
 4	*	C社	4
 5	*	A社	
 6	*	D社	6
 7	*	B社	
 8	*	B社	
 9	*	A社	
 10	*	C社	
 11	*	A社	
 12	*	D社	

 ◆Sheet2
 	A
 1	A社
 2	B社
 3	C社
 4	D社

 ◎作業列ありの場合◎
 ◆Sheet1の作業列の式
 C2=IF(B2="","",IF(COUNTIF($B$2:B2,B2)=1,ROW(),""))
 ★下にコピー

 ◆Sheet2の式
 A1=IF(ROW(A1)>COUNT(Sheet1!C:C),"",INDEX(Sheet1!B:B,SMALL(Sheet1!C:C,ROW(A1))))
 ★下にコピー

 ◎作業列なしの場合◎
 ◆Sheet2の式
 A1=Sheet1!B2
 A2=IF(ROW(A1)>COUNT(INDEX(1/(MATCH(Sheet1!$B$2:$B$100,Sheet1!$B$2:$B$100,)=ROW($1:$100)),))-1,"",
INDEX(Sheet1!$B$1:$B$100,100-MAX(INDEX((COUNTIF(A$1:A1,Sheet1!$B$2:$B$100)=0)*(Sheet1!$B$2:$B$100<>"")*100-ROW($A$2:$A$100),0))))
 ★A2の式を下にコピー

 ◆いかがでしょうか!
 (Maron)


キリキ 様,Maron 様,お二人ともありがとうございます.どのやり方でもできました.

ところが,私の説明不足なのですが,以下のように行が上から詰まっていません.そのような場合は,どこを変えれば良いのでしょうか?おそらくrow関数だと思うのですが,この関数,未だに使い方がよくわかりません.よろしくお願いいたします.

<シート1>

  A    B 

1 

2

3  NO.   社名

4  *   A社   (←ここから)

5  *   B社

6  *   A社

7  *   D社

8  *   D社

9  *   A社

10  *   B社

<シート2>

  A

1 

2 

3 

4 A社  (←A4から)

5 B社

6 C社


 ◎作業列あり◎
 ◆Sheet1のC4の式
 C4=IF(B4="","",IF(COUNTIF($B$4:B4,B4)=1,ROW(),""))
 ★下にコピー

 ◆Sheet2の社名の式
 A4=IF(ROW(A1)>COUNT(Sheet1!$C$4:$C$100),"",INDEX(Sheet1!B:B,SMALL(Sheet1!$C$4:$C$100,ROW(A1))))
 ★下にコピー

 ◎作業列なし◎
 ◆Sheet2の社名の式
 A4=Sheet1!B4
 A5=IF(ROW(A1)>COUNT(INDEX(1/(MATCH(Sheet1!$B$4:$B$100,Sheet1!$B$4:$B$100,)=ROW($1:$100)),))-1,"",
INDEX(Sheet1!$B$1:$B$100,100-MAX(INDEX((COUNTIF(A$4:A4,Sheet1!$B$4:$B$100)=0)*(Sheet1!$B$4:$B$100<>"")*100-ROW($A$4:$A$100),0))))
 ★A5の式を下にコピー

 ◆いかがでしょうか!
 (Maron)


できました!ありがとうございます.また是非ご教授をお願いします


コメント返信:

[ 一覧(最新更新順) ]


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