• 締切済み

ある条件下でIF関数により取り出した数値を計算する方法

エクセル関数です。2つの数字の変化が A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ の時に,以下の2つの条件を満たす式を作る。(1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す。(2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次はB7なので120,次はB8なので123…と数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出す。 (頂いた回答) 3列使います。C4=IF((B3=B2)*(B4=B3)*(SUM(C$2:C3)=0)=1,1,0)。D4=IF(B4<>B3,1,0) E4=A4*(C4+D4)。 リセットする毎に,リセットした時点のA列の数字から取り出したA列の数字を引き算したいのですが,良い関数が思いつきません。

  • gabon
  • お礼率44% (17/38)

みんなの回答

回答No.1

C3:=IF(((B1=B2)*(SUM(C1:C2)=0)+(B2<>B3)),A3,"") D4:=IF(C4<>"",VLOOKUP(10^10,C1:C3,1)-C4,"") 10^10の部分は、A列の最大値を超える値とします。 それぞれ下にコピーしてください。

関連するQ&A

  • IF関数について

    A4に=IF(SUM(A1:A3)=0,"",SUM(A1:A3))、 B4に=IF(SUM(A1:A3)=0,"",SUM(A1:A3))と式があり C4に=IF(AND(A4="",B4=""),"",B9-C9)と入力すると #VALUEが返ってしまいます。 A4,B4どちらかのセルが""の時でもB9-C9の引き算の値が返るようには出来ないでしょうか?

  • if関数について

    if関数についてどなたか教えてください。 ある二つの名簿があって、二つの名簿を照合して名寄せをしたいのですが、たとえば、A列の1行目から10行目まで、同じくB列の1行目から10行目まで氏名が入っているとします。A列とB列に同じ名前が入っていれば、C列に○印をつけるように関数を設定したいのです。自分なりに考えて、次のようにif関数を設定しました。・・・がうまく表示されません。エラーは出ませんので、関数としては成り立っていると思うのですが、○印が表示されません。どなたか間違いを指摘いただけませんでしょうか? C1のセルに次の関数を設定して、C10までコピーをしました。 if(A1=$B$1:$B$10,”○”,””) よろしくお願いいたします。

  • エクセルのIF関数について

    エクセルのIF関数について質問をさせて頂きます。 現在、下記のような条件で抽出できる式を考えているのですが、 中々思うような式が思い浮かびません。 例えば、     A列  B列  C列  D列 1行目  111 2行目  222 3行目  333 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999 上記のようなシートがあったとして、     A列  B列  C列  D列 1行目  111       999 2行目  222       333 3行目  333   ○   123   × 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999   ○ 上記のように、例として C列の1行目に「999」と入力した場合、A列の9行目に「999」の数字があるので、その横のB列に「○」 C列の2行目に「333」と入力した場合、A列の3行目に「333」の数字があるので、その横のB列に「○」 C列の3行目に「123」と入力した場合、どこにも該当番号がないので、入力したC列の横、即ちD列の3行目に「×」を表示 要は、A列のどこかに該当数字があった場合にはその数字の横(B列)に「○」、どこにも該当数字が無い時には、入力した数字の横、D列に「×」を表示するような数式を考えています。 IF関数を使えばできるような気がするのですが、色々と試してみても中々うまくいきません。 下手な説明で分かり辛いかもしれませんが、どなたかご存知の方がいましたら、ご教授の程頂ければ幸いです。 どうぞ宜しくお願い致します。

  • エクセル IF関数が入った条件付き書式について

    エクセルにおいて、セルA1、B1、C1があるとします。A1、B1には数値が何も入力されていない状態で、C1に計算式「=SUM(A1)/B1」が入っているとします。このままでは、C1は、「#DIV/0!」と表示されます。 この表示を消すために、C1にIF、ISERROR関数を使い、「=IF(ISERROR(SUM(A1)/B1),"",SUM(A1)/B1)」の計算式を入力します。 このままでもいいのですが、C1の値が「10以上」になった時に、C1のセルに色を付けたいのです。 書式→条件付き書式→セルの値が→次の値以上→10 にすると、セルに何も値が入っていない(空白)状態で色だけが付いてしまいます。 色々調べると、IF関数の""の空白が文字列のため、数値より大きいとみなされている事が原因っていうことは、分かりましたが、色々試してみても出来ません。何かいい方法はございますでしょうか? ご教授お願いします。

  • 参照した数値を関数に代入し計算する方法

    手動で数字を入力するセル(C1)に入れた数字と同じ数字を 規則的に数字が書いてある(例;1~100)A列から探し A行の隣に書いてあるB行の数字(A1だったらB1)を 参照し関数の入っているセル(E1)にBの値を入れてExcelで 計算するような方法(マクロになるようなら貼り付ければできる形)を 教えて下さい(B1の値が直接使えないならD1というA行の隣から探した Bの数字を表示するセルを作る形でも可) 例えばC1に10といれA行から10と書かれているA6のセルを検索し その隣のB6のセルから20という数値を参照し、E1に書いてある 例えば=IF(X(B6)<45,Y(例;F1)*1.5,IF(45<X(B6),Y(例;F1)*2)) のような関数のXに代入する感じです(Y(F1)の数字は適当なセルの値) 上手く説明できていないかもしれませんが宜しくお願いいたします

  • IF関数でしたい事と、似たような計算

    エクセル2002です。 表の中に   A     B   C  D 1  1~10  A 2 11~20  B 3 21~30  C 4 31~40  D    : と入力されています。 表示させたい内容は ★「C1セルには数字を入れます。その数字が8ならば、8は1~10の中の数字なので、D1のセルにAと表示される。15ならばBと入力したいです。 使う関数は、IF関数‥‥と迷ったのですが、1~20、21~30‥‥199~200まであるので、IF関数が使えません。 関数では、このような可能でしょうか? 可能であれば教えてください。 不可能であり、他の方法があるなら、教えてください。 お願いします。

  • IF関数で出した数値をSUM関数で使う

    2010エクセルでの関数について質問があります。 文章での説明でどこまで詳しくご説明できるか不安ですが お付き合い願います。 IF関数で =IF(A13>=25,"10","")と計算し、 セル内に、「10」と表示しています。 さらに、 上記、関数から表示した「10」を SUM関数を使い、 =SUM(A13,B13)と計算しました。 しかし、 IF関数で出した「10」が認識されず足し算されません。 「真の場合」や「偽の場合」で出された数値は 数値として認識されていないのでしょうか? 例えば・・・ B13のセルの数値が「200」であれば、SUM関数を入力しても 「10」が足されることなく、「200」のままで表示されるということです。 どのような方法ならば、足し算されるのでしょうか。 または、関数の使い方が間違っているのでしょうか。 説明が分かりにくく申し訳ありませんが、 宜しくお願い致します。

  • ある数値が何個目にあるか調べる関数ありますでしょうか?

    タイトルにありますとおり ある数値が何個目にあるか調べる方法 または関数がないか悩んでおります^^; 文章だけではわかりにくいので以下に例を示します。   A B C D  1 2 2 0 3 1 4 8 5 2 6 9 7 5 8 3   このような表があったとします。 A列に適当な数字が並んでいます。 A列で3が何個目にあるか?という場合は MATCH関数でMATCH(3,A1:A8)で8と表示されると思います。 調べたい数値が1個だけしか存在しない場合はいいのですが 複数ある場合、MATCH関数だとうまくいきません。 例えば、A列の2を調べる場合は1行目と5行目にあるため使えません。 このような場合、使えそうな関数、またはMATCH関数でも便利な活用方法など ご存知の方いらっしゃいましたら、ご教示いただけませんでしょうか^^;

  • 二つの条件に当てはまる場合に数値を返すには。

    二つの条件に当てはまる場合に数値を返すには。 VBA初心者です。 関数でもVBAでも構わないのですが、      A   B   C   D 101     9  14:00 102     8  14:10  103     5  14:15 104     2  14:02 105     3  13:50 106     1  14:50 107     3  13:10 108     5  13:45 109     10 14:20 という表のA列に 「B列に入っている数字」の中で 「C列で一番時間が遅い」数字だけを 表示させたい場合、どのように表示させれば宜しいでしょうか? 追加されるごとにA列の数字が変更するようにしたいです。 C列の時刻は NOW関数で入力しております。 当初VBAで 行 = Worksheets("○○").UsedRange.Row + ActiveSheet.UsedRange.Rows.Count Range("A1").Cells(行, 2) = "=IF(OR(RC[1]=1,RC[1]=2,RC[1]=3),IF(COUNTIF(R101C[2]:R[896]C[2],RC[2])=COUNTIF(R101C[2]:RC[2],RC[2]),RC[2],""""),"""")" と行っていたのですが、 表全体を並び替えする必要があった為質問させていただきました。 ご回答宜しくお願い致します。

  • 入れ子式の関数(IF)を使って 「0」 を表示させない方法

    パターン(1)⇒これならできます! --A-B-C-D-E-F 1-@-@-@-@-@ 2-@-@-@-@-@ 3-@-@-@-@-@ 4---------- 5-@-@-@-@-@ パターン(2)⇒行3のような飛び飛びのデータが入ると私の実力でできません --A-B-C-D-E-F 1-@-@-@-@-@ 2-@-@-@-@-@ 3----@-@-@- 4---------- 5-@-@-@-@-@ 上の表、わかりにくいと思いますが、F列にSUM関数でF1=IF(A1="","",SUM(A1:E1))とし、F1~F5まで連続コピーをして、A~Fまでが空白の行の合計を「0」表示させたくないのですが、パターン(2)のような場合、「A1="","",」のかわりにどの範囲を指定すれば、入れ子の関数を使って、F列に「0」表示させないことができるのでしょうか。 また簡単な違ったやり方はおありでしょうか。 説明がわかりにくいかもしれませんがよろしくお願いします。

専門家に質問してみよう