人気マンガがだれでも無料♪電子コミック読み放題!!

図のように下から数えて一番最初にヒットする空白でない行番号を取得したいのですが、
いい関数はありますか?
VBAは避けたいです。
ご教授よろしくお願い致します。

「エクセル 関数 下から一番最初の行番号」の質問画像

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

A 回答 (6件)

例題通りなら


=MATCH("ー",A:A)
でどうでしょう?

この回答への補足

すいません。
興味本位で知りたいのですが、"ー"はどういう意味なのでしょうか?
なぜ"ー"で最終行がわかるのか不思議です。
再度ご解答いただけたら幸いです。

補足日時:2009/08/30 18:01
    • good
    • 0
この回答へのお礼

思った通りにできました!ありがとうございます。

お礼日時:2009/08/30 17:59

#1です


>興味本位で知りたいのですが、"ー"はどういう意味なのでしょうか?
文字列の中では大きな値ということです。
数値の場合は =MATCH(8^3^8,A:A) でもいいです

>なぜ"ー"で最終行がわかるのか不思議です。
MATCH関数の照合の型を1(または-1)にすると二分探索を使った検索を行います。検索対象が昇順(降順)に並んでいるとされているので、最終行を見て判断し、終わりのほうの値がある場所を示すんだと思います
正確なアルゴリズムはわかりませんが、その性質を逆手に取った方法だと考えられます。

参考URL:http://oshiete1.goo.ne.jp/qa5186020.html
    • good
    • 0
この回答へのお礼

再度ありがとうございます。理由がわかってすっきりしました。

お礼日時:2009/08/31 23:12

【数値の場合】


=MATCH(10^10,A:A)
【文字列の場合】
=MATCH("ー",A:A)
【数値・文字列の場合】
=MATCH(1,INDEX(0/(A:A<>""),0))
【「あ」の場合】
=MATCH("あ",A:A)
    • good
    • 1
この回答へのお礼

いろいろは方法を教えてくださってありがとうございます。
大変参考になりました。

お礼日時:2009/08/31 23:11

こんばんは!


すでに回答は出ていますが・・・

文字・数値どちらにも対応できる数式です。

尚、配列数式になりますので、↓の数式をコピー&ペーストした後に
F2キーを押すか、数式バー内を一度クリックして
Shift+Ctrl+Enterキーを押してみてください。
数式の前後に{ }マークが入り、配列数式になります。

=MAX(IF(A1:A10000<>"",ROW(A1:A10000)))

尚、とりあえず10000行まで対応できる数式です。

以上、参考になれば幸いです。m(__)m
    • good
    • 0
この回答へのお礼

こんな裏技初めて知りました!
2番目のmike_gさんもこのことを言ってるのですね!
ご回答ありがとうございます。参考になりました。

お礼日時:2009/08/31 23:11

こんにちは



参照過去log
http://detail.chiebukuro.yahoo.co.jp/qa/question …

では。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。よく読んでみます。

お礼日時:2009/08/31 23:08

{=MAX((A1:A100<>"")*ROW(A1:A100))} ←配列数式

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

ちょっと使い方がわからないので調べてみます。

お礼日時:2009/08/30 17:59

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

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

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

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

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

QExcelで、条件と一致する最後のセルを検索したい

Excelで、条件と一致する最後のセルを検索したいのですが、どの関数をどのように使えばいいかわかりません。
どなたかお力をお貸し下さい。

問)
日付  社名  品名  個数
1/1   A    あ    1
1/1   C    い    2
1/2   B    う     3
1/2   A    え    4
1/3   C    お    5
1/3   A    あ    3

答)
A社の最終購入日は  1/3 あ 3
B社の最終購入日は  1/2 う  3
C社の最終購入日は  1/3 お 5

となるようお願いします。

Aベストアンサー

エクセルには「最後の該当」を検索する関数はありません。
無駄に複雑な数式を駆使すればもちろん「やればできます」が、添付図のようにちょっと工夫するだけで、普段使いの数式だけでやっつけるのがお勧めです。

A2:
=IF(OR(C2="",COUNTIF($C$2:C2,C2)<COUNTIF(C:C,C2)),"",C2)
以下コピー

答えは簡単なVLOOKUP関数を使うだけです。
H2:
=IF(COUNTIF($A:$A,$G2),VLOOKUP($G2,$A:$E,2,FALSE),"")




まぁ一応ご参考に作業列を使わない方法:
H2:
=IF(COUNTIF($C:$C,$G2),INDEX(B:B,MAX(IF($C$2:$C$999=$G2,ROW($C$2:$C$999)))))
と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力する

説明は省略しますので、ブラックボックスで使ってください。

QExcel MATCH関数で検索範囲内に同じ値の検索値が複数ある場合

MATCH関数で、検索した値が複数ある場合に1つしか出なくて困っています。
(例)
   A B C D
1 年月日 種類 番号 備考
2 4月1日 肉類 1
3 4月2日 野菜 2
4 4月3日 肉類 1
5 4月4日 果物 2
6 4月5日 野菜 1
7 4月6日 果物 3
8 4月7日 果物 2
9 4月8日 肉類 1

この表で、D9の備考の欄に「種類:肉類、番号:1」と同じものがあった時の日付を、新しい日付で取り出したいのです。

INDEX(A2:A8,(MATCH(B9,B2:B8,0)+MATCH(C9,C2:C8,0))/2)
としたのですが、本当は4月3日を取り出したいのですが、4月1日が出てきます。
どのようにしたら良いでしょうか?
Excel2003です。
よろしくお願いします。

Aベストアンサー

MATCH関数を使用しませんが、D9の書式を日付にして、
=MAX((A2:A8)*(C2:C8=1)*(B2:B8="肉類"))
と、入力してShift+Ctrl+Enterキーで入力完了してみてください(配列式になります)。

Q初めて0以外の数値が出てきたときの値を表示(EXCEL)

化学系の仕事をしていて実験の値をエクセルでまとめています。
こんなことは出来るのでしょうか?

1分ごとに測定を行いますが、はじめの数分は0の値が続きます。
簡単に例を挙げるとこんな感じです。
【例】
分→測定値
00→0
01→0
02→0
03→0
04→2.36
05→4.83
06→3.52

このとき初めて数値が0以外の値が出たときの2.36の値を適当なセルに表示させるにはどのような方法がありますか?測定値の数値には規則性がないのでMAX関数やMIN関数が使えません。何かいい方法教えてください。

Aベストアンサー

A列にデータがあるとしたら、
=INDEX(A1:A99,MATCH(TRUE,A1:A99<>0,0))
を配列数式として入力(Ctrl+Shift+Enter)
でいかが?

QExcelで、指定した範囲の先頭のセルの値を取得するには?

Excelで、指定したセル範囲(1列)で、空白を除いた先頭のセルの値を取得する
方法はありますでしょうか?
できればマクロを使用せずに関数だけでできるほうがありがたいです。

例)
 | A
------------
1 |(空白)
2 | ○
3 | △
4 | ×
5 | □

の場合、検索範囲にA1:A5 を指定すると、○が値として返ってくるような感じです。

Aベストアンサー

=INDIRECT("A"&MIN(IF(A1:A10<>"",ROW(A1:A10),9999)))
と入れてSHIFT+CTRL+ENTERのキーを同時押し。配列数式。
A10の部分2箇所はデータのある可能性のある行の最大行に変えてください。

Q条件に合った最初の行番号を表示したい。

excelで、Sheet1に、Aに丁目、Bに番地、Cに号を割り振りました。
  A  B  C
1  1  1  15
2  1  1  18
3  1  1  21
4  1  2  7
5  1  2  14
6  2  1  33
7  2  1  36
8  2  1  37
9  3  1   15
そこで、条件に合った最初の行番号を表示したいのです。
例えば、2丁目1番地の最初は、6行目なので、F1などに6と表示する方法を知りたいのです。
1丁目2番地だったら、F1は4になるようにしたいのです。
よろしくお願いします。

Aベストアンサー

こんばんは!

>例えば、2丁目1番地

D1sるに○丁目 の○の数値、E1セルに△番地 の△数値を入力するとします。

F1セルに
=MIN(IF((A1:A1000=D1)*(B1:B1000=E1),ROW(A1:A1000)))

これは排列数式になりますので、Shift+Ctrl+Enterで確定してください。

この画面からコピー&ペーストする場合は
上記数式をドラッグ&コピー → F1セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Shift+Ctrlキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。m(_ _)m

Q【エクセル】範囲内の空白ではない一番下のセル

またよろしくお願いします。
2段階にわけて質問します。

【質問1】
範囲A1:A10の空白ではない一番下のセルの値を得たい

【質問2】
たとえば質問1でA8が該当セルだった場合、範囲B1:B8の空白ではない一番下のセルの値を得たい。

A列の状態によってB列の範囲を変えて選び出すのが難しそうです。
よろしくおねがいします。

Aベストアンサー

こんにちは~

A1:B10 に入ってるのは数値ですか、それとも文字列?
それによって数式が変わりますよ。

> 範囲A1:A10の空白ではない一番下のセルの値を得たい

★数値なら

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

または

=IF(COUNT(A1:A10),LOOKUP(MAX(A1:A10)+1,A1:A10),"")

★文字列なら

=IF(COUNTA(A1:A10),INDEX(A1:A10,MATCH("*",A1:A10,-1)),"")


> たとえば質問1でA8が該当セルだった場合、
> 範囲B1:B8の空白ではない一番下のセルの値を得たい

★数値なら

=IF(COUNT(A1:A10),LOOKUP(10^10,INDIRECT("B1:B"&MATCH(MAX(A1:A10)+1,A1:A10,1))),"")

または

=IF(COUNT(A1:A10),LOOKUP(MAX(B1:B10)+1,INDIRECT("B1:B"&MATCH(MAX(A1:A10)+1,A1:A10,1))),"")

★文字列なら

=IF(COUNTA(A1:A10),INDEX(B1:B10,MATCH("*",INDIRECT("B1:B"&MATCH("*",A1:A10,-1)),-1)),"")

※B列の該当範囲に値がない場合のエラー処理はしていません。
※解決した質問は締め切ってくださいね。

こんにちは~

A1:B10 に入ってるのは数値ですか、それとも文字列?
それによって数式が変わりますよ。

> 範囲A1:A10の空白ではない一番下のセルの値を得たい

★数値なら

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

または

=IF(COUNT(A1:A10),LOOKUP(MAX(A1:A10)+1,A1:A10),"")

★文字列なら

=IF(COUNTA(A1:A10),INDEX(A1:A10,MATCH("*",A1:A10,-1)),"")


> たとえば質問1でA8が該当セルだった場合、
> 範囲B1:B8の空白ではない一番下のセルの値を得たい

★数値な...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QVLOOKUP関数で、一番下の値を拾うには?

以下のような表があるとします。

いちご 50
りんご 30
りんご 40
りんご 70
さとう 20
みかん 10
みかん 20

これで、例えばりんごの値をVLOOKUPで求めた場合
一番上である30が答えとして表示されます。
これを、一番下の70を出すには、どのようにしたら良いのですか?
 

Aベストアンサー

#3の回答者です。

#1様の数式について、私は、#3で詳しくは書きませんでした。すみません。ご質問者さんがエラーが発生するとしたら、このような状況が考えられます。

Excel 2003以下の仕様にはこのような問題があります。

Excel の仕様および制限
計算の仕様 --ワークシートの配列
http://office.microsoft.com/ja-jp/excel/HP051992911041.aspx?pid=CH062527721041

#1の数式は、INDEXは、配列数式です。
「セルの範囲 = 値」というスタイルは、配列数式といいます。一般数式は「ひとつのセル = 値」です。
それは、一旦、キャッシュの中に、計算ステージができて、そこで計算されます。そこから値を取り出すには、INDEX関数やSUMPRODUCT関数を使ったり、配列の確定(F2を押して、『ShiftとCtrlを押しながらEnterキー』を押す)をしたりします。

ですから、INDEX 関数等を使わない場合は、配列の確定をしても同様になります。Office 2007 では、その仕様が変わり、列全体をして指定しても、配列の制限がありません。ただし、広範囲にすると計算が遅くなることがあります。下位バージョンでは、範囲を指定しないと配列は不可能なのです。

ご興味のある方は、以下をごらんください。

Excel で配列を使用する処理の制限について
http://support.microsoft.com/kb/166342/ja

#3の回答者です。

#1様の数式について、私は、#3で詳しくは書きませんでした。すみません。ご質問者さんがエラーが発生するとしたら、このような状況が考えられます。

Excel 2003以下の仕様にはこのような問題があります。

Excel の仕様および制限
計算の仕様 --ワークシートの配列
http://office.microsoft.com/ja-jp/excel/HP051992911041.aspx?pid=CH062527721041

#1の数式は、INDEXは、配列数式です。
「セルの範囲 = 値」というスタイルは、配列数式といいます。一般数式は「ひとつのセル = ...続きを読む

Q【EXCEL】空白でないセルの位置を検索したい

初めまして。
EXCELの関数を利用して、
下記のようなことをしたいと思案中です。

 A B C D E F
1* 1   2   3
2* 1   2 3 3
3* 1   2   
4* 1   2 3 3

*が計算式を挿入したい箇所です。
各行の最初のブランク位置を検索したいです。
ブランクの個数は不定ですが、
B~Fのセルに入れるデータは全て数値です。

MATCH関数を使い、MATCH("",B3:F3)のようにしても、
#N/Aとなってしまいます。

何か良い方法はないでしょうか?
ご教授頂けますようよろしくお願い致します。

Aベストアンサー

配列数式を使ってようやく出来ました。
下は1行目のF列までの関数です。
{=MIN(IF(ISBLANK(B1:F1),COLUMN(B1:F1),""))}
入力する際に、コントロールキーとシフトキーを押しながらEnterキーを押してください。
指定した範囲に空白セルが無い場合は、0になります。それ以外は範囲中の最も左にある空白セルの列番号が数字で返されます。

QExcel - 関数に関する疑問

お世話になります。

たとえばある表で、A1(1月とします)からL1(12月とします)に向かって
5 7 11 14 13 13 25 27 15 16 20 22
と並んでいるとします。
また、この数値は累計で、12月に位置する「22」が最終の値だとします。

このうち、セルに常に最新の値を出す式として
=IF(COUNT(A1:L1),LOOKUP(MAX(A1:L1)+1,A1:L1),"")
というものをこちらで拝見し、これ自体は非常に便利で活用しているのですが、もひとつこの式の意味するところがよく分からずにいます。

何故COUNTをする必要があるのか?
MAX(A1:L1)は「27」のハズなのに、何故最終の「22」が引けるのか?
ていうか「+1」って何?

どなたか、解説をお願いいたしますm(_ _)m

Aベストアンサー

>何故COUNTをする必要があるのか?
数値が未入力のときのエラー処理です。
0でなければTRUEとみなされます

>MAX(A1:L1)は「27」のハズなのに、何故最終の「22」が引けるのか?
>ていうか「+1」って何?
の まずは「ていうか「+1」って何?」
から。最大値より大きければ何でもよいです
LOOKUP(8^3^8,A1:L1) もありです。
次に、「何故最終の「22」が引けるのか?」
LOOKUP関数は二分探索を行う関数です。VLOOKUPやMATCH関数の検索(照合)の型を「TRUE」にした場合も同様です。
その場合、昇順(降順)に並べ替えるのがヘルプに掲載されている使用法になります。

以下、私見
Excelにおける二分探索のアルゴリズムを逆手に取った方法だと考えています。
大きな値を求めて、右半分、そしてさらにその右半分、さらに・・・と検証するのではないでしょうか?
もちろん、L1セルに値があればこの範囲内の最大値とみなされ、そのまま表示されると考えられます

参考URL:http://su10.sgu.ac.jp/~morita/Seminar/6thStudent/entani/search/binary/binary.html

>何故COUNTをする必要があるのか?
数値が未入力のときのエラー処理です。
0でなければTRUEとみなされます

>MAX(A1:L1)は「27」のハズなのに、何故最終の「22」が引けるのか?
>ていうか「+1」って何?
の まずは「ていうか「+1」って何?」
から。最大値より大きければ何でもよいです
LOOKUP(8^3^8,A1:L1) もありです。
次に、「何故最終の「22」が引けるのか?」
LOOKUP関数は二分探索を行う関数です。VLOOKUPやMATCH関数の検索(照合)の型を「TRUE」にした場合も同様です。
その場合、昇順(降順)...続きを読む


人気Q&Aランキング