• ベストアンサー

エクセル特定の条件下での関数式

.......A ..B ..C 1......5...9...B1/A1 2...........6...B2/A1 3...........3...B3/A1 4......7...5...B4/A4 5...........8...B5/A4 6......4...7...B6/A6 7...........2...B6/A6     ・     ・    ご教示お願いします。 セルAに値が入力されている時のセルCの関数を知りたいです。 セルAが空白の時は直近上のセルAの値を使います。そして新たにセルAに値が入力されていればその値を使用します。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

以下は VLOOKUP関数のHELPです 検索の型に TRUE を指定した場合、範囲の左端の列のデータは、昇順に並べ替えておく必要があります。 検索の型 TRUE を指定するか省略すると、検索値が見つからない場合に、検索値未満で最も大きい値が使用されます。 検索値 10^8は 100000000のことですが 範囲の中で最も大きい数値以上であればOKです。 わざとTUREでも昇順に並んでいない状態で 検索値がとても大きく見つからないので 範囲で数値が入っている最後の行が返ってくる。 VLOOKUP関数の裏技みたいなものです。

kozou1126
質問者

お礼

ご回答ありがとうございます。 少しずつ理解できてきました。 右は(列番号)ではなく(検索の型)ですね。 (10^8)の部分も理解できました。 範囲内の最後のセル値が返ってくるという所の解読が、少し難しいですが・・・。なぜ、検索値未満の最も大きい値が返ってこないのか・・・。 色々と勉強して解読していきたいと思います。 ありがとうございました。

その他の回答 (3)

  • keirika
  • ベストアンサー率42% (279/658)
回答No.3

=B1/INDEX($A$1:A1,MAX(($A$1:A1<>"")*ROW($A$1:A1)),1) を入力し、 Ctrl+Shift+Enter の3ボタン同時押しで確定します。 確定すると式が{ }で囲まれます。

kozou1126
質問者

お礼

ご回答ありがとうございます。 参考にさせていただきます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

5,7,4・・・を捉える関数を作ります。 ENDキー+↑の操作をVBA化したもの。 標準モジュールに Function saishu(a) saishu = a.Offset(1, 0).End(xlUp).Row End Function をコピペ ーー 例データ A列   B列   C列  D列   E列答え 5 9 B1/A1 1 1.8 6 B2/A1 1 1.2 3 B3/A1 1 0.6 7 5 B4/A4 4 0.714285714 8 B5/A4 4 1.142857143 4 7 B6/A6 6 1.75 2 B6/A6 6 0.5 ーー 確認用の D列は上記で定義した関数を使って =saishu(A1) D1に入れて、下方向に式を複写。 ーーー E1には =B1/INDEX($A$1:A100,saishu(A1),1) と入れて、下方向に式を複写。 A2,A3などは「空白」であるという前提。 ーー 上記ユーザー定義の関数を普通の関数でやる回答は、過去にもあって、いま思い出せないが、回答が出るでしょう。

kozou1126
質問者

お礼

ご回答ありがとうございます。 VBAを使ったこういう方法もあるのですね。 参考になりました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

=B1/VLOOKUP(10^8,A$1:A1,1) 下フィルのことでしょうか。

kozou1126
質問者

補足

ご回答ありがとうございます。 解決したのですが、意味がわからない為教えてください。 VLOOKUP関数では左が(検索値)、真中が(範囲)、右が(列番号)だと思うのですが・・・。特に左の(10^8)というのがわかりません。真中が(範囲)、右が(列番号)というのがなんとなくわかるのですが。これでなぜ直近セルAの値が導かれるのですか?解読できないと応用が出来ない為、お手数ですがご教示お願いします。

関連するQ&A

  • エクセル 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関数の""の空白が文字列のため、数値より大きいとみなされている事が原因っていうことは、分かりましたが、色々試してみても出来ません。何かいい方法はございますでしょうか? ご教授お願いします。

  • エクセルの関数式で・・・

    このような表を作りました    A   B   C   D   E・・・ 1  a   a    b   a    c・・・ 2 12:00 8:00 11:00 4:00 12:30・・・ 3 (空白)PM (空白) AM (空白)・・・ A1にaと入力すれば12:00。B1にaと入力し、B3にPMと入力すれば8:00と計算できる表をVLOOKUP関数で作りました。 これに加えて、例えばA4にaを入力したらA2の値(時間です)から2時間引いた値をA2に、C4にbを入力したらC2の値から2時間引いた値をC2に表示するためにはどうしたら良いでしょうか? A4に入力したものに対応するA1の値から時間を引いていきたいのです。 よろしく御指導下さい。

  • EXCEL(エクセル)の関数について

    こんにちは、お世話になります。 エクセルの数式で困っており、ご教示頂きたいです。 C1のセルに、値を返させたいのですが、 A1の値が◆でB1が空白セルでなければ◇ A1の値が●でB1が空白セルでなければ○ A1の値が▲でB1が空白セルでなければ△ A1の値が■でB1が空白セルでなければ□ 、と返させたいです 全ての条件が満たされない場合は空白セルを表示させたいのですが、これを可能にするにはどのような数式を用いればよいでしょうか? 宜しくお願いします。

  • エクセルで条件付きの平均値を求める関数

    お世話になります。 恐らく簡単な見落としかと思うのですが、 関数がうまく動いてくれないので質問します。 A1~A5に商品名群(空白セルあり)、B1~B5(空白セルなし)にその値段が入力されています。 C1セルに、A1~A5で空白ではない行のB1~B5セルの平均値を出したいです。 例: A1:リンゴ  B1:100 A2:(空白) B2:50 A3:みかん  B3:400 A4:メロン  B4:500 A5:みかん  B5:200 この場合、B2の「50」は含めず、それ以外の行の平均値を求める。 関数はC1=AVERAGEIF(A1:A5,"<>""",B1:B5)と入れたのですが、空白セルを除いて計算してくれません。 間違いが分かる方がいましたら、返信頂きたいです。

  • 【エクセル】条件によって数式を削除する

    エクセルで以下のようなことは実現可能でしょうか? たとえば ・A1の値が「a」のときはC1にはB1を検索値としたルックアップの値を返す。 ・A1の値が「b」のときはC1はルックアップを使用せず直接値を入力させる。 つまり、A1の値によって、C1セルの数式を削除し、完全に空白にするということです。 「IF」関数等ではC1セルを空白にできても数式は残ってしまうため、実現することはできません。 わかりやすく言えば、「条件付書式」では条件によってセルの文字色や背景色を変更することしかできないと思いますが、それをセルの値も含めて変更するような感じです。 方法がお分かりの方、お教えください。

  • エクセル 特定値の数え方に関する関数について

    エクセル2010を使用しています。 3つの列でそれぞれの値が入力されているときに 「A列に○○と入力してあり、B列に△△と入力されているセル」の個数や、 「A列には○○、B列には△△と入力してあり、C列には××と入力されているセル」の個数を数えるにはどのように関数を作ればいいのでしょう? データが増えていくので、いちいちフィルタを使って数えるのが手間なので、関数を作りたいと思っています。 わかりずらくて申し訳ありません。一応下の例でいくと A列が「1」となっていてB列が「い」となっているセルの個数 や、 A列が「3」でB列が「あ」となっているC列「犬」の数などです。 A列 B列 C列 1  あ  犬 1  い  猫   1  あ  猫 2  う  犬 2  あ  鳥 3  う  犬 3  い  猫 3  う  鳥 よろしくお願いします。

  • エクセル関数について教えてください。

    A1-0       B1-0 A2-100       B2-200 A3-0       B3-50 A4-80      B4-0 A5-250      B5-100 というセルの値があり、それぞれのAとBを比べたとき、 (1)どちらも0の場合は ”空白” (2)値が2倍以上、または2倍以下の時は ”×” という結果をC列に出したいです。 IF関数を使用してやってみたのですが、値が0の場合エラーになったり 上手くできません・・・。 教えてください、よろしくお願いします。

  • Excelの関数について

    [C1のセル値]-[A1またはB1のセル値] を使って計算したい場合の計算式を教えて下さい。 A列、B列、C列には具体的な数値を入力します。 D列にその結果を表示させる関数を入力したい。 と考えています。 但し、以下の条件を満たす事が必須となります。 (1)A、B、またはCのセルが未入力の場合はDは空白セルのまま。 (2)A、Bいずれかの一方が入力されている場合はCの値を使って計算し結果を表示。 (3)A、Bいずれも入力されている場合はBを優先してCの値を使って計算し結果を表示。 よろしくお願いします。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセル関数式での縦横値の拾い上げ。

     初めまして、よろしくお願いします。   A  B  C  D  E 1 5        6 2 3        1 3 6        7 4 1        0 5 9        3 6 4        7 7 2        3 8 0        5 9 10  A10のセルに”3”と入力すると一致するA列のセルから(ここではA2セル)右に3下に4進んだ”7”(ここではD6)の値をB10のセルに拾い上げる関数式が有りましたら、よろしくお願いします。  

専門家に質問してみよう