• 締切済み

IF関数ですと長くなってしまうので・・・

既出でしたらすみません。 A列  B列  C列 1    1    出勤 2    2    出勤 5    3    休み      4    休み      5    出勤 というデータが入っていたとしまして、 C列の「出勤」(実際は時間が入っていますが)の場合には B列の数値をA列に表示させたいのですが、 出勤の番号を上から順番に表示させる関数がわかりません。 (今A列に入っている数値が本来表示させたい結果です) IF関数で出来ない事はないですが、TRUE,FALSEだけを繰り返していくと そうとう長くなってしまうので、何か良い方法がないでしょうか? よろしくお願い致します。

みんなの回答

回答No.5

ご存知の上で関数を使用したいということでしたら、 申し訳ないのですが・・・ >C列の「出勤」(実際は時間が入っていますが)の場合には >B列の数値をA列に表示させたいのですが、 >出勤の番号を上から順番に表示させる関数がわかりません。 >(今A列に入っている数値が本来表示させたい結果です) このような作業はフィルタでC列の「出勤」(実際は時間で)だけを表示し、 A列に入っている数値ではなくB列に入っている数値で事足りるような気がします。

回答No.4

データの範囲を1~99行とすると、 A1に、配列数式({}付:Ctrl+Shift+Enterで入力)で、 =IF(ROW()>COUNTIF($C$1:$C$99,"<>"),"",INDEX($B$1:$B$99,SMALL(IF($C$1:$C$99="","",ROW($C$1:$C$99)),ROW()))) 以下、コピー Bのセルが空白だと「0値」になる。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルには次の式を入力し、式を確定する段階でCtrl+Shiftキーを押しながらEnterキーを押します。その後に下方にドラッグコピーします。 =IF(COUNT(C:C)<ROW(A1),"",INDEX(B:B,SMALL(IF(ISNUMBER(C:C),ROW(C:C)),ROW(A1)))) この式ではC列には時間が入っているとのことですので数値が有るものとしています。出勤の文字では対応しません。

noname#204879
noname#204879
回答No.2

添付図参照 1.セル A1 に次の[条件付き書式]を設定    数式が   =ISERROR(A1)    フォント色 白 2.セル A1 に次の配列数式を入力して、此れを下方にズズーッとドラッグ&ペースト    {=SMALL(IF(C$1:C$100="出勤",B$1:B$100,""),ROW(A1))}    (↑これも「そうとう」長い?)

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.1

>C列の「出勤」(実際は時間が入っていますが)の場合には >B列の数値をA列に表示させたいのですが、 具体的に、「休み」の場合に何が入っているのか表示してもらわないと・・・ 時刻データの場合は、1より小さい値ですから A1に "=if(c1<1,b1,5)" とすれば済みますし 「休み」のデータでif文を構成しても良いと思います。 >IF関数で出来ない事はないですが、TRUE,FALSEだけを繰り返していくと >そうとう長くなってしまうので、何か良い方法がないでしょうか? 逆に、どんな長文を考えたのか教えて欲しいです。

関連するQ&A

専門家に質問してみよう