重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセルで A1→E1 のように 右にむかって セルに値を入力し 毎回数値を更新します。

最も右のセルに入力した値が最新なので そのセルの値を取得したいです。

色々調べて 関数を見つけたのですが 当方の条件には問題があって
毎回 2列ごとに 値を入力するのです

A2は1月のリンゴ代、B2は1月のオレンジ代、C2は2月のリンゴ代、D2は2月のオレンジ代

といった感じですので、同じ行に別の種類の値が入ってしまうことが ネックとなり
困っています。

この例で考えた場合、C2の2月のリンゴ代を取得できる 関数はありませんでしょうか?

一番右ではありませんので難しいのです。

例えば C1にリンゴ代 、 D1にオレンジ代 と 入力しておき

A2~D2の範囲内で その上のセルがリンゴ代という文字 で その中で
一番 右端のセルの値 を取得する

という 関数が組めればいいのですが。

私はVBAはできませんので 関数で何か いい案があれば
教えていただけないでしょうか

質問者からの補足コメント

  • うれしい

    ありがとうございます。

    あの数式のどこに何を当てはめれば
    自分のしたいようにできるかは 難しいので
    使いこなせませんが
    試した感じ まがいなりにも 使えそうです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/02/05 16:24
  • つらい・・・

    試していていて 1つ問題があるようです。

    この関数式も 当該の行にある場合
    うまく計算しないようです。
    (例えば 5行目で実施したいとき、X5にこの関数がある とか)

    この問題は どうにかならないものでしょうか

    すいませんが 教えてもらえないでしょうか

      補足日時:2020/02/05 16:37
  • つらい・・・

    ありがとうございます。

    関数が入ったセルより右のセルを選択したいと
    考えて いろいろとやったのですが うまくいきません。

    例えば
    関数が D6に入っているとすると、E6以降から選択すれば
    循環参照には ならないと考えて。

    申し訳ありませんが 上記の例で どう 教えていただいた
    計算式を改造すればいいか 教えていただけないでしょうか

    教えていただいた関数で調べてみているのですが
    基本的な説明はネットではあるのですが 教えていただいたような
    難しいものは わかりません。

    すいませんが よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/02/05 18:19
  • うれしい

    ありがとうございます。

    いただいた式を参考に 自分のパターンに
    あてはめると うまくいったようです。

    助かりました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/02/07 07:44

A 回答 (3件)

No2です



>関数が D6に入っているとすると、E6以降から選択すれば~
No1の式をそのまま流用すればよいでしょう。


参照するのは『右端の左隣のセル』ということで良いものとして・・・

この場合に、E6以降が空だったり、E6が最終列だったりするとおかしなことが起きるので、「参照する列は必ずE列以降とする」という処理を追加してあります。(E6以降が全て空の場合でも、E6が参照される)
D6セルに
 =OFFSET(A6,0,IFERROR(AGGREGATE(14,6,COLUMN(D6:CT6)/(F6:CV6<>""),1),4))
この回答への補足あり
    • good
    • 0

No1です



>当該の行にある場合うまく計算しないようです。
自分自身(式のあるセル)が右端に相当する可能性があるということですか?
もしそうなら、論理的に矛盾がありますし、自分自身を参照するのでエクセルは循環参照と見做していると思います。

式のあるセルを含まない(=もっと右側に右端が存在することが約束されている)のであれば、行の範囲をその範囲に限定してあげることで回避できるものと推測します。
No1の式は考え方を示すために、簡略化して行全体を指定していますが、実際にはおよその範囲が限定できるものと推測しますので、限定しておいた方がエクセルの計算負荷も小さくて済むはずです。

どうしても循環参照を指定したい場合は、
「オプション」-「数式」-「反復計算を行う」にチェックを入れておけばエラーを回避できるかも知れません。
ただし、自分自身がヒットしてしまった場合に、計算がどうなって、どのような値が表示されることになるのかはよくわかりません。
この回答への補足あり
    • good
    • 0

こんにちは



ご説明がよく理解できませんが、「特定行の入力のある右端セルの位置」を求めたいということかと推測しました。

例えば1行目であれば、
 =AGGREGATE(14,6,COLUMN(1:1)/(1:1<>""),1)
で、右端の列番号が求められます。

その左隣のセルを指定したいのなら列番号を1減ずればよいので、
 =OFFSET(A1,0,AGGREGATE(14,6,COLUMN(1:1)/(1:1<>""),1)-2)
で、当該セル(=右端の左隣)を参照できます。
(式中「-2」となっているのは、右端セルの場合が「-1」になるから)
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!