- ベストアンサー
エクセル特定の条件下での関数式
.......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に値が入力されていればその値を使用します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下は VLOOKUP関数のHELPです 検索の型に TRUE を指定した場合、範囲の左端の列のデータは、昇順に並べ替えておく必要があります。 検索の型 TRUE を指定するか省略すると、検索値が見つからない場合に、検索値未満で最も大きい値が使用されます。 検索値 10^8は 100000000のことですが 範囲の中で最も大きい数値以上であればOKです。 わざとTUREでも昇順に並んでいない状態で 検索値がとても大きく見つからないので 範囲で数値が入っている最後の行が返ってくる。 VLOOKUP関数の裏技みたいなものです。
その他の回答 (3)
- keirika
- ベストアンサー率42% (279/658)
=B1/INDEX($A$1:A1,MAX(($A$1:A1<>"")*ROW($A$1:A1)),1) を入力し、 Ctrl+Shift+Enter の3ボタン同時押しで確定します。 確定すると式が{ }で囲まれます。
お礼
ご回答ありがとうございます。 参考にさせていただきます。
- imogasi
- ベストアンサー率27% (4737/17069)
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などは「空白」であるという前提。 ーー 上記ユーザー定義の関数を普通の関数でやる回答は、過去にもあって、いま思い出せないが、回答が出るでしょう。
お礼
ご回答ありがとうございます。 VBAを使ったこういう方法もあるのですね。 参考になりました。
- hallo-2007
- ベストアンサー率41% (888/2115)
=B1/VLOOKUP(10^8,A$1:A1,1) 下フィルのことでしょうか。
補足
ご回答ありがとうございます。 解決したのですが、意味がわからない為教えてください。 VLOOKUP関数では左が(検索値)、真中が(範囲)、右が(列番号)だと思うのですが・・・。特に左の(10^8)というのがわかりません。真中が(範囲)、右が(列番号)というのがなんとなくわかるのですが。これでなぜ直近セルAの値が導かれるのですか?解読できないと応用が出来ない為、お手数ですがご教示お願いします。
お礼
ご回答ありがとうございます。 少しずつ理解できてきました。 右は(列番号)ではなく(検索の型)ですね。 (10^8)の部分も理解できました。 範囲内の最後のセル値が返ってくるという所の解読が、少し難しいですが・・・。なぜ、検索値未満の最も大きい値が返ってこないのか・・・。 色々と勉強して解読していきたいと思います。 ありがとうございました。