• ベストアンサー

EXCELの関数について

   A   B   C   D   E    計 1  ○  △   空   □   空   □-△ 2  ○  空   △   空   空   △-○ 3  ○  空   空   △   □   □-○ 4  ○  空   空   空   空    ○ 上記のように表を作成した時に 計の欄に行の一番右に入力された数値から 右から二番目に入力された数値を引く計算式 というのはあるのでしょうか。 空=空欄になります。 1の行に関しては一番右に入力されている数値が □になるので、□の次に一番右にある△を引く。 2の行に関しては、一番右にある数値が△なので △の次に一番右にある数値○を引く。 3の行に関しては、一番右にある数値が□なので □の次に一番右にある数値△を引く。 4の行に関してはAの列にしか数値が入っていないので Aの数値をそのまま反映させたいです。 説明が下手ですみません^^; どなたか親切な方教えて下さいorz

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 F1セルに次の数式を入力してから、F1セルをコピーしてF2以下に貼り付けると良いと思います。 =IF(COUNT($A1:$E1)=0,"",HLOOKUP(99^9,$A1:$E1,1)-IF(COUNT($A1:$E1)=1,0,HLOOKUP(99^9,$A1:INDEX($A1:$E1,MATCH(99^9,$A1:$E1)-1),1)))  尚、セルに入力される数値が99の9乗以上になる事が有り得る場合には、数式中の 99^9 となっている部分を、セルに入力される事が有り得ない程、大きな数値と置き換えるか、 或いは、F1セルに入力する数式を次の様に変えて下さい。 =IF(COUNT($A1:$E1)=0,"",HLOOKUP(MAX($A1:$E1)+1,$A1:$E1,1)-IF(COUNT($A1:$E1)=1,0,HLOOKUP(MAX($A1:$E1)+1,$A1:INDEX($A1:$E1,MATCH(MAX($A1:$E1)+1,$A1:$E1)-1),1)))

rupaso2
質問者

お礼

ありがとうございます。 コピペで使わせてもらいました^^ バッチリでした!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • yosifuji20
  • ベストアンサー率43% (2675/6115)
回答No.1

いささか力ずくの式ですが。 元の数値はA4:F4にあり、答えはG4に表示するものとします。 G4=W5-X5 H4=IF(A5>0,1,0) I4=IF(B5>0,2,0) J4=IF(C5>0,3,0) K4=IF(D5>0,4,0) L4=IF(E5>0,5,0) M4=IF(F5>0,6,0) O4=RANK(H5,$H5:$M5,0) P4=RANK(I5,$H5:$M5,0) Q4=RANK(J5,$H5:$M5,0) R4=RANK(K5,$H5:$M5,0) S4=RANK(L5,$H5:$M5,0) T4=RANK(M5,$H5:$M5,0) U4=IF(MAX(H5:M5)>0,MAX(H5:M5,0)) V4=IF(S5=2,5,IF(R5=2,4,IF(Q5=2,3,IF(P5=2,2,IF(O5=2,1,0))))) W4=IF(U5>0,INDEX(A5:F5,1,U5),0) X4=IF(V5>0,INDEX(A5:F5,1,V5),0) 式の意味は、 H4からM4はそれぞれの数値がゼロより代の時は右側からのセルの位置を表します。 O4からV4はH4からM4の値の順序を示します(昇順) U4はO4からV4の最大値、これで一番右側の数値の位置がわかります。 V4はO4からV4の2番目の値、これで右側から2番目の有効値の位置がわかります。 W4に式はA4からF4の数値でU4であらわされる位置(一番右の数値)が表示されます。 X4に式はA4からF4の数値でV4であらわされる位置(右側から2番目の数値)が表示されます。 (W4とX4がIF文になっているのは、全部空白の場合や、有効地が1個しかないときにエラーになら無いようにするためです。) 最後にG4=W5-X5で答えが出ます。 以上はVBAで関数を作れば簡単なのですが、そのロジックを関数だけで作ってみました。 答えはこれで合うのですが、実用的でしょうかね??

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル関数で条件が二つの時の数値抽出

       列方向のそれぞれ三つのセルに数値が入った78行  (75行から152行)のテーブルがあります。       今,これらと異なる列方向の三つのセルの内の左側二  つに,テーブル内の任意の行の数値をそれぞれ選択した  時,残るセルにテーブル内の残された行の数値を抽出し  たいと思いますがうまくいきません。      何方かエクセル関数で出来る方法を教えていただけま  せんか。   なお,選択行は4行だけとしており,これらを連続させず  に一行毎に設け,各行毎の抽出セルにDSUMで計算式を  作成すると数値の抽出ができますが,この方法は避けた  いと思います。     (数値選択列)(抽出列)   (テーブル)   73行 X  ,Y   ,Z      , AA  ,AB  ,AC   74行開始 終了 期間     開始 終了 期間   75行,0005 ,0011 ,0010 (空欄),0004 ,0012 ,0010   76行,0007 ,0009 ,0010 (空欄),0005 ,0011 ,0010   77行,0004 ,0011 ,0009 (空欄),0006 ,0010 ,0010 (空78行,0008 ,0003 ,0004 (空欄),0007 ,0009 ,0010  --------------------(空欄),0004 ,0011 ,0009 (空79行(空            欄),0005 ,0010 ,0009 (空80行(空            欄),0006 ,0009 ,0009 (空                 欄),0007 ,0005 ,0006 (空152行(空           欄),0008 ,0003 ,0003    以上で,(空,あるいは(空欄)乃至は数字で00を含む4  桁としているのは,文字化けを避けるために便宜上入れた  もので,数値そのものは2桁の範囲です。                   何度もトライしておりますができません。どうかよろしくお  願いします。なお,エクセルVBAによる方法もお教えいただ  ければ有難いです。

  • Excelの関数で教えてください

    http://okwave.jp/qa/q8549840.html の関連質問です。 上記URL内の画像で任意行のA列に「計」または「小計」という文字を入れた際に同じ行のE列にその上の行までの小計を入れる、というような数式を作ることは可能でしょうか? 例えば上記URL内の画像の表で言いますと、 E2からE5まで数値が入っています。 この時、A10に「計(あるいは「小計」)」と入力しますと、E2からE5までの足し算をした結果が出る。 また、この時上記URLの#1もしくは#2の数式も有効である必要があります。 A10で小計を計算したあと、E11、E12に数値が入り、最終行の合計欄で合計表示、という運用も考えられます。 以上、ご教示よろしくお願いいたします。

  • IF関数で

    AとB列に数値(空欄もあり)が入力してあります。 C列にAかBに数値が入力してあれば○を表示したいのですが CもBも空欄の場合は非表示です。 =IF(A1="","","○")に何を追加すればよいでしょう?

  • エクセル関数 条件適合時にゼロ値を表示したい。

    エクセルの計算結果のゼロ値の表示方法について教えてください。 セルは、A列・B列・C列に各7行があります。 A1 B1 C1 A2 B2 C2 A3 B3 C3  ・  ・  ・  ・  ・  ・ と言う感じです。 A列とB列は任意の数値を入力し、C列は(A列-B列)の計です。 例えば、C列の計算結果として、次のように数字を表示させたいのです。     A列  B列  C列 1行   8   6   2 2行             (A列に未入力なので、C列にはゼロ値も表示しません) 3行   5   5   0 (計算結果として、C3にはゼロ値を表示します) 【A列に数値が入るかどうかは、その度に変わります。次の時にはB1せるにも数値が入る可能性があります】 C1セルに計算式を入力し、下のセルにはフィルドラッグで入力できるような式はあるでしょうか? よろしくお願いします。

  • エクセルの関数で

    A列B列それぞれに100行ぐらいあり数値が入力しています。 C列にA列とB列のうち数値が小さい方の数値を100行分抽出したいのですが、エクセルの関数でできないでしょうか?

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

    エクセルのCOUNTIF関数について、というかCOUNTIF関数でよいのかどうかもよく分からないのですが、教えて下さい。 (1)まず、ワークシートのA列の1~100行目までの100マスを範囲として、数値を入力していくときに、仮に同じ数値を入力しようとしても、入力ができないようにしたいのです。 (2)次に、ワークシートのA列とC列のそれぞれ1~100行目までの合計200マスを範囲として、(1)と同じことをしたいのです。(つまりB列はとばして) (1)と(2)のようなことは可能でしょうか? お分かりの方がおられましたら、ぜひよろしくお願いします!

  • Excelの関数で教えてください

    添付画像のような表があり、E列の「金額」欄は基本的にはB列×D列の乗算の結果を表示させるので、それだけなら例えば2行目なら「B2*D2」で良いのですが、D列が空欄だったり、B列・D列とも空欄になる場合があって、E列のみに数値を記入するケースがあるため、E列に数式を設定するとイレギュラーで数値を入力できないため、その場合、隣のF列に代わりに入力すると、E列に表示が出るようにしたいと考えています。 C列は単位が入ります(○本、○ケース、○式等) まとめますと、 E列に表示される数値は B列とD列それぞれに数値がある場合はB列×D列の結果を表示 B列に数値があり、D列に数値がない場合はF列に入力した数値を表示 B列にもD列にも数値はなく、F列に数値がある場合はF列に入力した数値を表示 B列、D列、F列のいずれにも数値がない場合はブランク というような数式をE列に設定する場合、どういうような数式にすればいいのか、ご教示いただけないでしょうか? 以上、よろしくお願いいたします。 ちなみにExcel2010または2003で使用します。

  • エクセル関数について

    下記内容ができる関数を調べているのですが、いっこうに進みません。 教えていただけませんでしょうか。。。 A列:行番号 B列:入力列 ※A列は1~の連番ではありません。 B列で入力した最後の行が何行目(A列の値)なのかを、他のシートに 反映させたい場合。。。 よろしくお願いいたします。

  • EXCELで数値の検索

    excel2000です。 あるセル範囲の中から、数値の入っているセルを探し出し、 「計」の字のあるセルの前までその数値を繰り返す・・・という表を 作りたいのですが、どうしたらいいのかわかりません。 例) A3に「1」、B6に「計」が入っています。 A1からA5の範囲から数値の入っているセル(=A3)を探し出し、 C1:C5に「1」を並べる。 続いてA8に「2」、B11に「計」が入っていて、 C7:C10まで「2」を並べる。 という感じです。 A列の範囲は毎回変わり、B列の「計」の次の行から、 次の「計」の手前までの範囲です。 数値が入っている場所(A3やA8)も毎回変わります。 本当に困っています。 お力を貸してください。よろしくお願いします。

  • エクセルで『○』の個数を数値で返す関数は?

      1  2  3  4  5  計 あ ○  ○  ○  ○  ○  5 い ○  ○  ○  ○  ○  5 う ○  ○  ×  ○  ○  4 え ○  ×  ○  ○  ×  3 お ○  ○  ○  ○  ○  5 上記のように○だけの合計を計の欄に数値で返すにはどうしたらよいでしょう? すいません、よろしくお願いします。