[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『抽出について』(まさっち)
アルバイトの人達から来週以降の勤務予定日を提出してもらっています。
各アルバイトの人の出勤を入力するとそれをまとめた表を出したいのですが・・・
例をあげると 下記
21日 22月 23火 24水 25木 26金 27土
A君 ● ● ● ●
B君 ● ● ● ●
C君 ● ● ●
D君 ● ● ●
↓
21日 22月 23火 24水 25木 26金 27土
A君 A君 B君 A君 B君 A君 B君
C君 B君 C君 D君 C君 D君
D君
こんな具合になればと・・・
[A] [B] [C] [D] [E] [F] [G] [H] [1] 21日 22月 23火 24水 25木 26金 27土 [2] A君 ● ● ● ● [3] B君 ● ● ● ● [4] C君 ● ● ● [5] D君 ● ● ● [6] [7] 21日 22月 23火 24水 25木 26金 27土 [8] A君 A君 B君 A君 B君 A君 B君 [9] C君 B君 C君 D君 C君 D君 [10] D君 B8=IF(COUNTIF(B$2:B$5,"●")<ROW($A1),"",INDEX($A$2:$A$5, SMALL(IF(B$2:B$5="●",ROW($A$1:$A$4),""),ROW($A1)),)) と入力して、Ctrl+Shift+Enterで数式を確定。 H列までフィルドラッグし、必要分下にフィルドラッグでどうでしょうか? (ROUGE)
編集→置換→検索する文字「●」、置換後の文字列「=INDIRECT("A"&ROW())」 としてみては? (Ohagi)
さっそくのお返事ありがとうございます。
数式を入れたらエラーになるんですが・・・
Ctrl+Shift+Enterで数式を確定していますか? 数式が{ }でくくられていたら入力成功です。 (ROUGE)
うまくいきました
ちなみにバイトの(A君〜D君)人数が変われば
何処の数値(関数の)が変動するんですか?
=OFFSET()を利用して書いてみましたが、大変、処理が重いです。
B11に=INDEX($A$2:$A$7,MATCH("●",OFFSET(B$7,,,-ROWS(B2:B7),),))。
B12に =IF(COUNT(MATCH("●",OFFSET(B$7,,,MATCH(B11,$A$2:$A$7,)-ROWS(B$2:B$7),),)), INDEX(OFFSET($A$7,,,MATCH(B11,$A$2:$A$7,)-ROWS(B$2:B$7),), MATCH("●",OFFSET(B$7,,,MATCH(B11,$A$2:$A$7,)-ROWS(B$2:B$7),),)),"") として、これをB15までフィルドラッグ。 B11:B16を右にフィルドラッグ。 というものです。 (LOOKUP)
A B C D E G G H 1 21日 22月 23火 24水 25木 26金 27土 2 A君 ● ● ● ● 3 B君 ● ● ● ● 4 C君 ● ● ● ● 5 D君 ● ● ● ● 6 E君 ● ● 7 F君 ● ● 8 9 10 21日 22月 23火 24水 25木 26金 27土 11 A君 A君 A君 B君 B君 A君 B君 12 C君 B君 D君 C君 E君 C君 D君 13 D君 C君 F君 14 D君 15 E君
> ちなみにバイトの(A君〜D君)人数が変われば何処の数値(関数の)が変動するんですか? =IF(COUNTIF(B$2:B$5,"●")<ROW($A1),"",INDEX($A$2:$A$5,SMALL(IF(B$2:B$5="●",ROW($A$1:$A$4),""),ROW($A1)),)) ~ ~ ~ ~ 下線部の数値をそれぞれ増やしてあげればできますよ^^ (ROUGE)
完璧ですね・・・
余談ですがCtrl+Shift+Enterで数式を確定するのと
ただのEnterを押すのでは、何が異なるのでしょうか?{}の意味があまりよくわかりません・・・
この数式は配列数式と呼ばれています(詳細はHELPで確認して下さい)。 今回の数式のメイン部分に着目して・・・
=INDEX($A$2:$A$5, SMALL( IF(B$2:B$5="●",ROW($A$1:$A$4),"") ,ROW($A1)),)
まず、以下の数式に注目。 =IF(B$2:B$5="●",ROW($A$1:$A$4),"") これを配列数式として確定しますと、B2、B4、B5に●が入っているので、それぞれに対応するROW()関数の戻り値または""が返ります。 ={1,"",3,4}
したがって =SMALL({1,"",3,4},ROW($A1))=SMALL({1,"",3,4},1)=1 となります。
=INDEX($A$2:$A$5,1,)=$A$2="A君" となるわけです。
この数式を下にフィルドラッグすると、SMALL関数の第2引数であるROW関数がROW($A2)に変わりますので、 =SMALL({1,"",3,4},ROW($A2))=SMALL({1,"",3,4},2)=3 となって、C君になります。
こんなんで分かりますか? (ROUGE)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.