- ベストアンサー
どんな数式を入力すればいいのでしょう?
(A1:Z1)の1行の表に空白セルと数字入力セルがランダムに入力されています。 最右セル(Z1)から見て、数字が入力されている最初のセルの値を取り出したいのです。 例えば、Y1=2, Z1=3 (他のセルは空白)ならば 3 B1=4 , K1=8 ,M1=5 (他のセルは空白)ならば 5 というように最右から最初に出て来るセルの数字を取り出したいのです どんな計算式(関数)を入力すればいいのでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
=INDEX(A1:Z1,1,SUMPRODUCT(LARGE((A1:Z1<>"")*COLUMN(A1:Z1),1))) でどうでしょう
その他の回答 (6)
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 =INDEX(1:1,MATCH(MAX(A1:Z1)+1,A1:Z1,1))
お礼
ありがとうございました
- sige1701
- ベストアンサー率28% (74/260)
要するにA1:Z1で一番右のセルの値(数値)を求めるんですよね =LOOKUP(10^10,A1:Z1)
お礼
こんなに簡単な数式でできるんですか!? ありがとうございました
{=INDEX(A1:Z1,1,MAX(COLUMN(A1:Z1)*ISNUMBER(A1:Z1)))} (配列数式)
お礼
ありがとうございました
- imogasi
- ベストアンサー率27% (4737/17069)
=MAX(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1),0)) と入れてSHIFT+CTRL+ENTERの3つのキーを同時押しする。これで最右の列番号(数字)が出ます。 (例)F1がa,J1が12、N1が1で14 セルの数値は =INDEX(A1:Z1,1,MAX(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1),0))) と入れてSHIFT+CTRL+ENTERの3つのキーを同時押しする。 1が答えになりました。 これをABC・・・列記号に直すには =CHAR(64+MAX(IF(ISNUMBER(A1:Z1),COLUMN(A1:Z1),0))) と入れてSHIFT+CTRL+ENTERの3つのキーを同時押しする。 Nになります。
お礼
解き方にもいろいろとあるんですね! ありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
#01です。少し説明しましょうか。 (A1:Z1<>"")は配列式ですがA1~Z1のそれぞれのセルが空白で無いとき1、空白の時0の値になります。(結果も26個の配列です) またCOLUMN関数は列番号を取得する関数ですので、 (A1:Z1<>"")*COLUMN(A1:Z1) は「空白でない列のときその列番号の配列」を返します。 LARGE関数(またはMAX関数)で上記「列番号の配列」から最大値を求めると「空白でない最大列(=最右列)の列番号」が求まります。そしてINDEX関数で最右列の値を取り出しているのです。 なおSUMPRODUCT関数は元々は配列どうしのかけ算を行う関数なのですが、配列数式(Shift+Ctrl+Enterで確定)にしなくても配列を扱えるので便利です。色々と応用できる関数ですので、過去の質問をSUMPRODUCTで検索してみたらよいでしょう
お礼
ようやく分かりました! 列番号を使うという意味に納得しました ありがとうございました
- onlyrom
- ベストアンサー率59% (228/384)
配列数式を使って =INDEX(A1:Z1,1,MAX(COLUMN(A1:Z1)*(A1:Z1<>""))) 式を確定するときは、Enter ではなくて、Shift+Ctrl+Enter で確定する
お礼
回答してくださった数式の意味がわかりませんができました ありがとうございました 配列を使うということはNo.1の回答者さんと同じような 意味でしょうか?(A1:Z1<>"")が分かりません
お礼
SUMPRODUCT以下の意味が分かりませんができました。 ありがとうございました。