人に聞けない痔の悩み、これでスッキリ >>

Excelで、A1からZ1のセルの内で一番右の入力してあるセルの数字を参照したい場合はどうしたらいいのでしょうか。
例えば、A1,B1,C2,D1,E1にそれぞれ、5, (未入力), 10,7,(未入力)とかの場合は、入力されている中で一番右側にあるD1にある7がその答えになります。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

すいません、補足です。


=HLOOKUP(10,A1:Z1,1,1)
の最初のパラメーター"10"は入力される最大値より大きい数字にして下さい。
    • good
    • 4
この回答へのお礼

ありがとうございました。うまく行きました。
言ってませんでしたが、今回最大値は予測できないので万能にはならないかも知れません。事実上特に問題はないのですが。

お礼日時:2009/08/26 22:58

こんばんは!


すでに回答は出ていますが・・・
他の方法の一例です。

配列数式になりますので
表示させたいセルに
=IF(COUNTBLANK(A1:Z1)=26,"",INDEX(A1:Z1,LARGE(IF(A1:Z1<>"",COLUMN(A1:Z1)),COLUMN(A1))))
として
Shift+Ctrl+Enterキーを押してみてください。
数式の前後に{ }マークが入り配列数式になります。

尚、この画面から数式をコピー&ペーストする場合は
貼り付けただけではエラーになると思いますので
貼り付けた後F2キーを押すか、数式バー内で一度クリックし
編集可能にした後に
Shift+Ctrl+Enterキーを押してください。

以上、参考になれば幸いですが、
他に良い方法があれば読み流してくださいね。m(__)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
参考にさせて頂きます。

お礼日時:2009/08/26 23:01

=IF(COUNT(A1:Z1),LOOKUP(10^10,A1:Z1),"")

    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2009/08/26 23:00

たぶん、これで行けます。


=HLOOKUP(10,A1:Z1,1,1)
    • good
    • 2

一例です。


=IF(COUNT(A1:Z1),INDEX(A1:Z1,MATCH(MAX(A1:Z1)+1,A1:Z1,1)),"")
    • good
    • 0
この回答へのお礼

うまく行きました。ありがとうございました。

お礼日時:2009/08/26 22:53

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q値が入っている一番右のセル位置を返す方法

たとえばA行に値(文字列)が横に並んでいるとして
値が入っている一番右のセルの位置を返すようにするにはどのようにすればいいでしょう?

Aベストアンサー

セルの位置を返したいのであれば
=CHAR(MATCH(MAX(1:1)+1,1:1,1)+64)&1
でどうでしょうか。

Q値の入っているセルのうち、一番右側の値を取得したい(エクセル)

現在、データを左から右へ順次追加しています。
一番右側が、最新データとなります。
やりたいことは、複数の行にある、最新データを拾って、グラフを作成したいと思ってます。
どうやったら、できるのでしょうか?


<イメージ?>
●:最新データ
×:古いデータ
○:空欄
●のみを拾って、グラフを作成したい。

×××××●○
××××●○○
×●○○○○○
××××●○○

Aベストアンサー

こんにちは。maruru01です。

データがB列から、順に右へ入力されていくとして、A列に最新データを表示する場合は、

A1を選択して数式バーに、

=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN($B1:$M1),COLUMN($B1:$M1)))))

と入力し、まだカーソルが数式バーにある状態で[Ctrl]と[Shift]を押しながら[Enter]を押して決定します。
(数式の両端に「{}」が付いて配列数式になります。)
これを下の行へコピーします。
あとは、このA列の値でグラフを作成すればいいと思います。
なお、上記の数式ではデータ入力範囲をB~M列にしましたが、後ろの列は、データを入力する可能性のある最大の列にして下さい。
(何列まで入力するか分からない場合は、エクセルの最終列のIVにしましょう。)

各関数については、ヘルプなどを参照して下さい。
配列数式については、以下のページを参考にして下さい。

http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm

参考URL:http://pc21.nikkeibp.co.jp/pc21/pc_10/hr_top.htm

こんにちは。maruru01です。

データがB列から、順に右へ入力されていくとして、A列に最新データを表示する場合は、

A1を選択して数式バーに、

=INDIRECT(ADDRESS(ROW(),MAX(IF(LEN($B1:$M1),COLUMN($B1:$M1)))))

と入力し、まだカーソルが数式バーにある状態で[Ctrl]と[Shift]を押しながら[Enter]を押して決定します。
(数式の両端に「{}」が付いて配列数式になります。)
これを下の行へコピーします。
あとは、このA列の値でグラフを作成すればいいと思います。
なお、上記の数式ではデータ入...続きを読む

QEXCEL 関数 選択範囲一番右のセル番地確認方法

いつもお世話になっております。

EXCELの関数について相談をさせてください。
選択範囲($AC11:$IV11)で入力されているセルの一番左のセル番地を返す関数はありますでしょうか。
一番右のセルは、以下の関数で取得できるのですが、一番左が取得できません。

=INDIRECT(ADDRESS(7,LARGE(INDEX(($AC11:$IV11<>"")*COLUMN($AC11:$IV11),),1)))

ご存じの方がおられましたら、ご教授いただけませんでしょうか。
以上、よろしくお願いいたします。

Aベストアンサー

なぜ、そのような回りくどい数式を考えるのだろう??

そのまま考えて一番右
=INDEX($7:$7,MAX(IF($AC11:$IV11<>"",COLUMN($AC11:$IV11))))
[Ctrl]+[Shift] +[Enter] で確定、配列数式です({}で囲まれる)

一番左
=INDEX($7:$7,MIN(IF($AC11:$IV11<>"",COLUMN($AC11:$IV11))))
[Ctrl]+[Shift] +[Enter] で確定

11行目 文字列なら
一番左
=INDEX($AC$7:$IV$7,MATCH("*",$AC11:$IV11,0))
一番右
=INDEX($AC$7:$IV$7,MATCH("ーー",$AC11:$IV11))

11行目 数値なら 一番右
=INDEX($AC$7:$IV$7,MATCH(8^3^8,$AC11:$IV11))

とすることも可能です

Qエクセル関数式、入力範囲の一番右端の値を返すには?

エクセル関数式質問です。
Sheet1のセルA1値、A2値、A3値、A4値を,Sheet2のセルA1に「=Sheet1!A1」,セルB1に
「=Sheet1!A2」,セルC1に「=Sheet1!A3」,セルD1に「=Sheet1!A4」という仕組みを作っ
ておいて、Sheet1のセルA1からA4に人の名前をそれぞれ入力したとします。
例えば、Sheet1のセルA1に「田中」、セルA2に「中村」、A3は空白、A4も空白としたと
き、Sheet2のセルA1には「田中」,セルB1には「中村」,セルC1に「空白」,セルD1に「空
白」(この場合、これらの空白は空白に見えても実際は、「Sheet1!A*」が隠されている
わけですが…)となります。
以上の条件において、Sheet2の別セルに、今、Sheet2のA1からA4の範囲に表示されてい
る名前のうち、常に右端の名前を表示させたい場合、この場合は「中村」です。その右
となりは空白ですので。仮にA3に「大山」と表示されたてA4は空白の場合は、もちろん
「大山」になります。この別セルに入力する関数式を教えてください。宜しくお願いし
ます。

エクセル関数式質問です。
Sheet1のセルA1値、A2値、A3値、A4値を,Sheet2のセルA1に「=Sheet1!A1」,セルB1に
「=Sheet1!A2」,セルC1に「=Sheet1!A3」,セルD1に「=Sheet1!A4」という仕組みを作っ
ておいて、Sheet1のセルA1からA4に人の名前をそれぞれ入力したとします。
例えば、Sheet1のセルA1に「田中」、セルA2に「中村」、A3は空白、A4も空白としたと
き、Sheet2のセルA1には「田中」,セルB1には「中村」,セルC1に「空白」,セルD1に「空
白」(この場合、これらの空白は空白に見えても実際は、「Sheet1!A*」が...続きを読む

Aベストアンサー

こんな感じでも良いかな

=LOOKUP(1,0/(A1:A4<>0),A1:A4)

Qエクセルにおいて、数値が入っている一番右端のセルの値を取得する方法

エクセルに、左から順にデータを追加しています。
よって、一番右端が最新版となります。
その一番右端のデータのみを取りだして、自動的に作表するようにしたいのですが、どうすればよいでしょうか。
よろしくお願いします。

Aベストアンサー

こんにちは。

一行目を検索するとして、

入力が文字列だけなら、
=INDEX(1:1,MATCH("ー",1:1))

数値だけなら、
=INDEX(1:1,MATCH(9E+307,1:1))
・・・9e307は、十分に大きな数字なら何でもよいです。

どちらか分からないなら、組み合わせて
=INDEX(1:1,MAX(MATCH({"ー",9E+307},1:1)))

1:1というのは、A1:M1と書き換えてもよいです。
A1:M1と書けば、A1:M1のなかで一番右端の値を
参照します。

Qエクセルで左端のセル位置を取得するには

範囲内で空白を除いて一番左端のセルの位置を取得する方法というのはあるでしょうか?

たとえば以下のような表の場合にA1にはC1、A2にはD2、A3にはE3が入るようにしたいのです。
以下のような表の場合に
 A  B  C  D  E
1      1  2   3
2           2   3
3             3

わかりづらい質問で申し訳ありませんが、よろしくお願いします。

Aベストアンサー

No.5です。

MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)
MATCH(検査値, 検査範囲, 照合の型)

検査範囲は INDEX関数でつくられた配列データ。
配列データの内容は LEN(B1:E1)で、B1:E1各セルの文字数( 桁数 )。

質問の例ではわかりにくいので
B1:空白、C1:1234、D1:空白、E1:56
のようにデータが入っていると思ってください。

SIGN関数を使わずに、INDEX(LEN(B1:E1),0) だとすると、
{0,4,0,2}
という配列データになります。
0、4、0、2 は LEN関数の戻り値、B1:E1のそれぞれの文字数( 桁数 )です。

SIGN関数は数値の正負を調べる関数。
引数が正の数なら( 何桁であっても )1を返します。
だから SIGN関数を使って、INDEX(SIGN(LEN(B1:E1)),0) なら
{0,4,0,2} という配列データは
{0,1,0,1}
というふうになります。
ここでは SIGN関数の引数は文字数なので、セルが空白なら 0、データが入っていれば 1。戻り値は 0 か 1 かのどちらかです。

なので、MATCH関数は↓な感じになります。
=MATCH(1,{0,1,0,1},0)

1が検査値。{0,1,0,1}が検査範囲。
何桁の数値( 文字列でも )が入っていても、検査値を 1にしておけば左端のデータ位置を求めることができるってことです。

もしかしてこの検査値の 1を見て、
>左端の値は1とは限らないのです。
と思いました? ちっ、ヴァカな回答よこしやがって! て感じでした?

このときの MATCH関数が返す位置は B列を1とするものなので、正しいセル番地を求めるために +1しています。
MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)+1

検査範囲が C列から始まるなら +2、D列から始まるなら +3のように調整してください。

No.5です。

MATCH(1,INDEX(SIGN(LEN(B1:E1)),0),0)
MATCH(検査値, 検査範囲, 照合の型)

検査範囲は INDEX関数でつくられた配列データ。
配列データの内容は LEN(B1:E1)で、B1:E1各セルの文字数( 桁数 )。

質問の例ではわかりにくいので
B1:空白、C1:1234、D1:空白、E1:56
のようにデータが入っていると思ってください。

SIGN関数を使わずに、INDEX(LEN(B1:E1),0) だとすると、
{0,4,0,2}
という配列データになります。
0、4、0、2 は LEN関数の戻り値、B1:E1のそれぞれの文字数( 桁数...続きを読む

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q一番右側のセルの値

Sheet 1のセルA1~セルL10までのセル120個には、不規則にランダムで数字(整数)が記載されています。
ランダムですので数字のゼロが記載されているセルもあります。

これをセルM1にはセルA1~L1までのセルの一番右のセルに記載されているゼロ以外の数字を抜き出します。同様にA2~L2、A3~L3,・・・・・・・・と云うように各行についても最も右側にあるゼロ以外の数字を抜き出したいのですが、IF関数でIFを重ねて式を作成せずにできる関数を教えてください。

また、同様に一番左に記載されているゼロ以外のセルを抜き出す方法についても教えてください。

Aベストアンサー

一番右:
=INDEX(A1:L1,MATCH(1,0/A1:L1,1))
と記入してコントロールキーとシフトキーを押しながらEnterで入力

一番左:
=INDEX(A1:L1,MATCH(1,A1:L1/A1:L1,0))
と記入してコントロールキーとシフトキーを押しながらEnterで入力

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング