• ベストアンサー

エクセルで求めたセルの左隣りのセルの値を返したいです

お世話になります INDEXとMatchを使い行の一番右(左から順にセルが埋まるので右端のセルが一定では無い)の値を返すようにしました。以下です。 しかし、一番右から2番目のセルの値(求めたものの左隣り)もほしいのです。 その場合はどうしたらよいのでしょうか? =INDEX(1:1,MAX(IF(COUNT(1:1),MAX(MATCH(MAX(1:1)+1,1:1,1))),IF(COUNTIF(1:1,"*"),MATCH("",1:1,-1)))) 宜しくお願い致します。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

> INDEXとMatchを使い行の一番右(左から順にセルが埋まるので右端のセルが一定では無い)の値を返すようにしました。 数値にも文字列にも対応したすばらしい式ですね。感心しました。 > 一番右から2番目のセルの値(求めたものの左隣り)もほしいのです。 こんな数式を作れる人が何をおしゃいますことやら・・・。 左隣ならINDEXを1つ少なくするだけのことですから =INDEX(1:1,MAX(IF(COUNT(1:1),MAX(MATCH(MAX(1:1)+1,1:1,1))),IF(COUNTIF(1:1,"*"),MATCH("",1:1,-1)))-1) でいいんじゃないでしょうか?

berry_late
質問者

お礼

あああ。そんな簡単なことで良いのですね。 もともとの式は似て非なるものを前任の方が残して行ったので、それをそれを紐解いて応用して作成したものなのです。 あるものを理解し紐解いて応用できたのですが、そこにない情報をどのように組み入れるのかがさっぱりわからず。。。。 なるほどぉ。。。見るとわかるのですが、作り出せないので感動しました。 ありがとうございました。

その他の回答 (7)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.8

◆こんな方法もありますよ =INDEX(1:1,LARGE(INDEX((1:1<>"")*(COLUMN(1:1)),),2)) ★後ろの数字が一番右から何番目かになります

berry_late
質問者

お礼

本当にいろいろな方法が考えられるものですね。これは単純化されていて良いですね。 次回にまたこの回答例を参考にいろいろ自分でも応用してみようと思います。 ありがとうございました。

  • howarage
  • ベストアンサー率20% (2/10)
回答No.7

左隣が空白の場合にも対処するにはMAXの代わりに、LARGE関数使えばよかったのですね。 {=INDEX(1:1,LARGE(IF(ISBLANK(1:1),0,COLUMN(1:1)),2))} 教えて!は本当に勉強になります。

berry_late
質問者

お礼

本当にいろいろな方法が考えられるものですね。 次回にまたこの回答例を参考にいろいろ自分でも応用してみようと思います。 ありがとうございました。

  • howarage
  • ベストアンサー率20% (2/10)
回答No.6

みなさんいろいろなやり方を考えますねぇ 僕もひとつ考えました。配列数式を使いますが、式が直感的でわかりやすかなと思います。 {=INDEX(1:1,MAX(IF(ISBLANK(1:1),0,COLUMN(1:1))))} 左隣はやはりINDEXの-1なんですが、その左隣が空白の場合はどうすればいいのか。。。正直、悩んでます。

berry_late
質問者

お礼

本当にいろいろな方法が考えられるものですね。 次回にまたこの回答例を参考にいろいろ自分でも応用してみようと思います。 ありがとうございました。

noname#176215
noname#176215
回答No.5

左から順に入っているのなら 既に出ている方法(COUNTを使う方法) でできそうですが せっかくなので > =INDEX(1:1,MAX(IF(COUNT(1:1),MAX(MATCH(MAX(1:1)+1,1:1,1))), > IF(COUNTIF(1:1,"*"),MATCH("",1:1,-1)))) この式は =LOOKUP(10^16,CODE(1:1),1:1) こうすることもできますね。ひとつ前なら =INDEX(1:1,LOOKUP(10^16,CODE(1:1),COLUMN(1:1)-1))

berry_late
質問者

お礼

なるほどぉぉぉ。 本当に勉強になりますねぇ。。。。 ありがとうございました。

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

INDEX関数の列を示す引数のところにー1すれば済む。 同行一番右は =INDEX(A1:Z1,1,COUNTA(A1:Z1)) (Z列までが入力範囲として) もし式複写するなら =INDEX($A1:$Z1,1,COUNTA($A1:Z$1))など または =INDEX(1:1,1,COUNTA(1:1)) その左はー1列すればよい =INDEX(A1:Z1,1,COUNTA(A1:Z1)-1) または =INDEX(1:1,1,COUNTA(1:1)-1)

berry_late
質問者

お礼

そのようですね。下の回答を拝見して学びました。 このマイナス1が曲者でした。 このような使い方ができるとは知らなかったので、とても役に立ちました。 ありがとうございました。

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

よくもまあこんな複雑な式を作りましたねぇ。 2,3ケ月後に見て、直ぐ分かるのだろうかと人事ながらちょと心配。。。(^^;;; 途中に未入力セルがない前提なら、、、 ●右端の値   =INDEX(1:1,0,COUNTA(1:1)) ●右端よりひとつ前の値   =INDEX(1:1,0,COUNTA(1:1)-1) ●右端より二つ前の値   =INDEX(1:1,0,COUNTA(1:1)-2) 外しましたらご容赦願! 以上です。  

berry_late
質問者

お礼

ありがとうございます。 そうなんです。未入力セルがなければ一番右はこれだと私も思うのです。 ところが、空白があるもので、これだとだめなんです。 でも、右寄りひとつ前の値への応用は#1の場合と同じでこれが私にはわからなかったので、大変勉強になりました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

複雑な式なので、にわかには理解できませんでした。 で、 こんなのでは駄目なんですか。 一番右 =INDIRECT(ADDRESS(1,COUNTA(1:1))) 左隣 =INDIRECT(ADDRESS(1,COUNTA(1:1)-1))

berry_late
質問者

お礼

ありがとうございます。 INDIRECTは使ったことがない関数で、今パラパラと本をめくってなるほどと思いました。 次回何かの折にぜひ使用したいものです。 ところが今回は空白があるものでこれだとだめなんです。 でも、右寄りひとつ前の値への応用は#1の場合と同じでこれが私にはわからなかったので、大変勉強になりました

関連するQ&A