[[20070327234746]] 『空欄のデータは詰めて抽出』(む) ページの最後に飛ぶ

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

 

『空欄のデータは詰めて抽出』(む)
 お願いします。
   A  B  C  D  E
 1 3/1 早     3/1  早
 2 3/2       3/3  遅
 3 3/3 遅     3/4  早
 4 3/4 早     3/5  早
 5 3/5 早     
 6 3/6

 ↑のようにB列に入力があったらA〜B列をD列以降に抽出させたいのですが、
 B列が空欄の場合は詰めて抽出したいのです。
 関数での抽出は可能でしょうか?

     	[A]	[B]	[C]	[D]	[E]
 [1]	3/1	早	1	3/1	早
 [2]	3/2			3/3	遅
 [3]	3/3	遅	2	3/4	早
 [4]	3/4	早	3	3/5	早
 [5]	3/5	早	4		
 [6]	3/6				

 作業列を使用した場合の一例です。					
 C1=IF(B1="","",COUNTA($B$1:B1))					
 で下行へコピー					
 D1=IF(MAX($C$1:$C$6)>=ROW(A1),INDEX($A$1:$B$6,MATCH(ROW(A1),$C$1:$C$6,0),COLUMN(A1)),"")					
 で下行ヘコピー、さらに右列へコピーです。					
 如何でしょうか?					
   (SS)	

 もう一案

 D1=IF(COUNTA($B$1:$B$6)>=ROW(A1),INDEX($A$1:$B$6,SMALL(IF($B$1:$B$6<>"",ROW($B$1:$B$6)),ROW(A1)),COLUMN(A1)),"")

 と入れて、Ctrl + Shift + Enter で確定して下さい。
 そして、下行、右列へコピーです。
   (SS)				


 SSさん、ありがとうございます!
 あまりデータを増やしたくないので、作業列ナシの案を使わせていただきます。
 返事が遅くなりすみませんでした。

 申し訳ありません。
 行を増やしたら、#NUM!と表示されてしまう箇所があります。
 色々調べたのですが、このエラーの根本が理解出来ません。
 どのような意味なのか、お教えください。
 (む)

 (4)#NUM!
   大きすぎる数値又は小さすぎる数値
   [An invalid NUMber] の略
   (MS-Help 数式または関数の数値に問題がある場合に表示されます)
   (例)
    セルC11 に =10^309 と入力します( [^] はべき乗で[ヘ]のキー)
    セルA12 に 1979/4/14 と入力し、セルC12 に =DATEDIF(A12,2004/07/13,"y")
     で#NUM!エラー
    セルA13 に 2004/07/13 と入力し、セルC13 に =DATEDIF(A13,"1979/4/14","y")
     のように開始日と終了日が逆でも#NUM!エラー

http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040713.html

                        より  (dack)

 なるほど。勉強になりました。
 dackさんありがとうございます。

 それと、応用というかもう一つお教えください。
 抽出の先頭データを同シート内の「D1セル」に指定しましたが、
 コレを「Sheet2・J9」にする場合は、どのようにしたら良いのでしょうか?
 色々やってみているのですが、うまくいきません。
 お願いします。
 (む)

 内容を見ていないので、外しているかもしれませんが
 ROW関数やCOLUMN関数が使われている関数の場合
 シフトさせなければならないセル番地と、
 シフトさせてはいけないセル番地とを 見分ける必要がある場合が多いです。

 どのあたりまでうまくいきますかね?
 1.Sheet2のD1にする場合
 2.Sheet2のJ1にする場合
 3.Sheet2のJ9にする場合
 ・・・3番目までいけてれば、必要な事は出来ていると言う事になりますが・・・。

 (HANA)

 お手数をおかけしてすみません。
 データベース・抽出先等詳細に記載させていただきます。
 <Sheet1>のようなデータベースがあるとき、時間の入力がない行は削除して
 <Sheet2>に抽出するにはどのようになしたらよいでしょうか?
 お願いします。
 <Sheet1>
 	[A]	[B]	[C]	[D]		
 [1]						
 [2]						
 [3]						
 [4]						
 [5]						
 [6]		    開始	終了		
 [7] 日付   曜日				
 [8] 4/16   月				
 [9] 4/17   火   09:00  18:00
 [10]4/18   水   12:00  21:00		
 [11]4/19   木   09:00  18:00		
 [12]4/20   金 
 [13]4/21   土   09:00  12:00	
 [14]4/22   日   09:00  12:00	
 [15]4/23   月   09:00  12:00		 

 <Sheet2>
 ・・・・[AT]・・・・[AX] [AY]
 [3]	4/17    9:00	18:00		
 [4]	4/18    12:00	21:00		
 [5]	4/19    9:00	18:00		
 [6]	4/21    9:00	12:00	
 [7]	4/22    9:00	12:00		
 [8]	4/23    9:00	12:00	


   (SS)さんの回答を使用して 

 AT3=IF(COUNT(Sheet1!$C:$C)>=ROW(A1),INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$C$8:$C$15<>"",ROW($C$8:$C$15)),ROW(A1))),"")

 AX3=IF(COUNT(Sheet1!$C:$C)>=ROW(A1),INDEX(Sheet1!$C:$D,SMALL(IF(Sheet1!$C$8:$C$15<>"",ROW($C$8:$C$15)),ROW(A1)),COLUMN(A1)),"")

 と入れて、Ctrl + Shift + Enter で確定して下さい。
 そして、下行、右列へコピーです。

 お久しぶりです。
 お礼を書いたと思っていたのですが、まだのようでした。
 とても使い勝手の良いものができました。
 ありがとうございました。

 ところで、上記は「C列」に入力があれば抽出ですが、基準列を「E列」にした場合
 AT3=IF(COUNT(Sheet1!$C:$C)>=ROW(A1),INDEX(Sheet1!$E:$E,SMALL(IF(Sheet1!$E$8:$E$15<>"",ROW($E$8:$E$15)),ROW(A1))),"")
 ↑こんなことをしてみましたが、うまくいきません。
 再度お教えください。
 (む)


 こんにちは〜♪

 横から失礼しま〜す。。。

 >基準列を「E列」にした場合

 でしたら

 >COUNT(Sheet1!$C:$C)>=ROW(A1)

 C列をCOUNTするのではなくて
 E列をCOUNTしなくては、いけませんので。。。

 COUNT(Sheet1!$E:$E)>=ROW(A1)

 に、してみて下さい。。。

 。。。Ms.Rin〜♪♪


 ありがとうございます。
 COUNT(Sheet1!$E:$E)>=ROW(A1)
 ↑にしてみたら、何も値が返ってきませんでした。><
 空白になってしまいます。(む)

 数式内の参照先セル番地が何をしたい時何処を参照しているのか
 解読してみる試みはおこなってみられましたか?

 Sheet1C8:C15の範囲が空欄でない物の
 Sheet1A:A列の値を返したい時、上の名無しさんの式
 >AT3=IF(COUNT(Sheet1!$C:$C)>=ROW(A1),
 >INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$C$8:$C$15<>"",ROW($C$8:$C$15)),ROW(A1))),"")
        ~~~~~~~~~~~~          ~~~~~~~~~~~~~~~~~~~~~
 これで上手く行ったのですよね?

 最初にSSさんが作ってくださった式と、その時の条件。
 次に、条件が変わったときに、名無しさんが何処を変更して
 新しい式を作ってくれたのか。
 見比べてみると、何処を変えればよいのか分かると思いますよ。

 それでも分からないときは、又ご質問頂くのがよいかと思います。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


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