痔になりやすい生活習慣とは?

検索範囲A1:A31
検査値B1で

=VLOOKUP(B1,A1:A31,TRUE)
では、検査値以下の最大の値しか取得できなかったのですが、検査値以上の最小の値をもとめるにはどうすればいいのでしょう?
(VLOOKUP関数に限定するわけではありませんが、VLOOKUPで出来るよと聞いたものですから・・・・)

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

A 回答 (4件)

=min(if(a1:a31>=b1,a1:a31,""))


と入力して、ShiftとCtrlを押しながら、Enterで確定する…という関数では、いかがでしょうか?
    • good
    • 0
この回答へのお礼

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

これって検査範囲の並び順を問わないんですね?

同様に、
=MAX(IF(A1:A31<=B1,A1:A31,""))
で、検査値以下の最大の値が取得できるんですね?

以上の理解でよろしいのでしょうか?

お礼日時:2005/05/02 00:00

merlionXX さんへ


#1のレス:
>同様に、
>=MAX(IF(A1:A31<=B1,A1:A31,""))
>で、検査値以下の最大の値が取得できるんですね?
できると思います。

これは、シミュレートしてみればいいのです。
数式バーやセルの数式F2で開いて、式の一部の
  IF(A1:A31<=B1,A1:A31,"")
をマスウ選択して、F9 を押せば、その内容が実体化しますから、そこから、Max や Min をつけられることが分かりますね。

例:
{1;2;3;4;5;6;7;8;8;9;9;9;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""}

だから、MAX側は、
=MAX((A1:A31<=B1)*(A1:A31))
「0」は、影響を与えないから、乗算も可能ですね。

{ } 付きが、配列です。「;」が、縦で、「,」が横ですね。
{1,10;2,3}
縦横混在

4角形の配列では、縦よりも、横が優先されます。Z字状にデータを拾ってきます。
    • good
    • 0
この回答へのお礼

Wendy02さん、いつもありがとうございます。

まだ配列数式をよく理解できていないのでおっしゃることの半分もわかりませんでしたが、F9 を押せば、その内容が実体化するというのは新鮮な驚きでした。

ありがとうございます。

お礼日時:2005/05/02 11:04

Minを使った配列数式は、発表されていますので、それ以外で考えてみました。


=SMALL(A1:A31,MATCH(B1,A1:A31,1)+ISERROR(MATCH(B1,A1:A31,0)))

shinkun0114さんのアイデア、なるほどね。
じゃあ、配列にして並べ替えてしまえばよいわけですね。

=-VLOOKUP(-B1,SMALL(-A1:A31,ROW(A1:A31)),1)
配列数式なので、式を入れた後に、Shift+Ctrl - Enterで入れてください。
    • good
    • 0
この回答へのお礼

なるほど、配列数式にすれば作業列は不要ですね。
いつもありがとうございます。

お礼日時:2005/05/02 00:05

 ちょっと裏技チックですが、負の数字の場合、


絶対値の関係がひっくり返る現象を利用しては
どうでしょう?

 0 5 10 15 ・・・
と並んでいる場合、検査値が8であれば、vlookupでは
5を返します。しかし、
 -15 -10 -5 0
と並んでいる場合、検査値が-8であれば、-10が帰ってきます。

1.負の検査範囲を作る
  B1セルに「=-A1」を入力し、B31まで下にコピーします。
  B1:B31をコピーし、「形式を選択して貼り付け」を選び、
  [値(V)]を指定して、B1:B31に上書きで貼り付けます。
  その後、データ並び替えで、昇順にしておきます。

2.検査値以上の最小値を検索する式
  (検査値の位置をC1にした場合)
  =-VLOOKUP(-C1,B1:B31,TRUE)
  と入力します。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ただ、作業列を別に作りたくないのです。
すみません。

お礼日時:2005/05/02 00:03

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

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

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

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

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

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エクセルで、ある範囲のセルのうち、5以上の値で最小の値を求めたい

エクセルで、ある範囲のセルのうち、5以上の値で最小の値を求めたいです。


1 3 2 6 9 0 4

ならば、 6が答え。

関数が無ければ、VBAで作った関数でも構いません。

また、VBAで範囲指定と条件指定が引数となる方法も知りたいです。

Aベストアンサー

=MIN(IF(セル範囲>=5,セル範囲))
(Shift + Ctrl + Enter)

DMIN関数もあるし。(ヘルプ見てね)

ユーザー定義関数も簡単ですよ、ぜひ作ってみてください。(こんなこともできないようでは、コードをもらってもメンテも作り込みもできません。)

Q指定範囲から任意の近似値を探したい

画像のようなものを作ろうと思っています。
ですが、vlookupやindex・match関数では私の力ではうまい具合にはいきませんでした。

どのように数式を入れるとよろしいのでしょうか?

Aベストアンサー

こんにちは!

G12セルに
=MIN(IF(B3:E15>G8,B3:E15))
これは配列数式になりますので、Ctrl+Shift+Enterで確定!

G14セルに
=ADDRESS(SUMPRODUCT((B3:E15=G12)*ROW(B3:B15)),SUMPRODUCT((B3:E15=G12)*COLUMN(B3:E3)),4)

という数式を入れてみてください。m(_ _)m

Qエクセルで、指定の値よりも大きい数字を最初に越えたときの列番号を返すには?

テストの点数で、初めて40点を下回ったときの日付と、初めて80点を越えた時の日付を返すような関数を組みたいのですが、どうやればいいか分かりません。MATCH関数を使うような気がするのですが、そこから先が分かりません。

例)
1月1日  43点
1月2日  83点
1月3日  81点
1月4日  26点
・・・
この例であれば、80点を初めて越えるのは「1月2日」、
初めて40点を下回るのは「1月4日」という形で答えを返したいのですが、どなたかお知恵を貸してください。よろしくお願いします。

Aベストアンサー

◆こんな方法はいかがでしょう
>80点を初めて越えるのは「1月2日」
D2=MIN(INDEX((B2:B10<=80)*10^5+A2:A10,))

>初めて40点を下回るのは「1月4日」
D5=MIN(INDEX(((B2:B10>=40)+(A2:A10=""))*10^5+A2:A10,))

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すると関係ないセルの値が返るので、
場...続きを読む

QExcelで最大値の入っている数値の右側にある項目名を拾いたい。

Excelで最大値の入っている数値の右側にある項目名を拾いたい。

下のようなデータがあります。(A列は年、Bは何かの生産量・・とします)

1 2000 7
2 2001 11
3 2002 14
4 2003 10
5 2004 9
6 2005 8

生産量(B列)の最大値を求めるのは=MAX(B1:B7)で"14"が得られると思いますが、求めているのは"14"の入っている年の"2002"という数字を隣のC1に入れたいと思います。
どのような関数が必要でしょうか?

Aベストアンサー

こんばんは!
一例です。

↓の画像でC2セルに表示するようになりますが・・・

C2セルの数式は
=INDEX($A$2:$A$1000,MATCH(MAX(B2:B1000),B2:B1000,0))
にしています。
(エラー処理はしていません)
A列の1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば幸いです。m(__)m

Qエクセル 複数の条件付で最小値を求めたい

SMALL関数を使用し、最小値を求めようと思ったのですが、
以下のように複数条件で絞り込んで最小値を出したいと思います。
(A-Bの組み合わせ毎の最小値を出す)

A  B  C
東京 渋谷 1000
東京 渋谷 2000
東京 葛飾 2000
東京 葛飾 2500
東京 葛飾 4000



東京 渋谷 1000
東京 葛飾 2000

複数条件抽出の場合SUMPRODUCTを使用していますが、
どうにもSMALL関数を組み込むことができず、お力を
お貸しください。よろしくお願いいたします。

バージョンはエクセル2003を使用しています。

Aベストアンサー

関数を使うなら以下のような配列数式を使用することになります。
(E1セルとF1セルに絞り込み条件が入力されている場合)

=MIN(IF(($A$1:$A100=E1)*($B$1:$B$100=F1),$C$1:$C$100,""))

入力後、Ctrl+Shift+Enterキーで確定してください。

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エクセル 条件を満たす最大値を求めたい

エクセルで受付のデータを以下の形式で管理しようと考えています
お名前については集計シートよりVLOOKUPで参照しています

会員No, お名前, 日付
1, AAAA, 2007/08/01
2, BBBB, 2007/08/02
3, CCCC, 2007/08/03
1, AAAA, 2007/08/04
  :(以下略)

集計シートを作成していて「最終受付日」の求め方が分りません。
回答お願いいたします。
maxとifを組み合わせてやっているのですが、期待する結果が出せません。。。
経過日数、受付数については実装済みです。

会員No, お名前, 最終受付日, 経過日数, 受付数
1, AAAA, 2007/08/04, 28, 2
2, BBBB, 2007/08/02, 30, 1
  :(以下略)

Aベストアンサー

配列関数で実現できますよ。

{=MAX(IF(一致条件検索範囲=一致条件,最大検索範囲,""))}

詳細はリンクを参照してください。

参考URL:http://pc.nikkeibp.co.jp/pc21/special/hr/hr3.shtml

QexcelのVLOOKUPで検索値を2つにできますか?

excelのVLOOKUPで検索値を2つにしたいです
私の知っているVLOOKだと下記のことは対応できます
例えば、A列に会社名、B列に住所、C列に電話番号 とあった場合
「住所が検索値と同一なら電話番号を表示しなさい」という指示は出せます

そこで質問です
「会社名と住所が検索値と同一なら電話番号を表示しなさい」
というような、複数の検索値を持つ事はできないのでしょうか?

参考になるURLなどでも結構ですので、ご存知の方よろしくお願いいたします

Aベストアンサー

元の表をA列に会社名、B列に住所、C列に「=A2&B2」、D列に電話番号のようにして
=VLOOKUP(会社名&住所,$D$2:$C$100,2,FALSE)
のようにすれば可能です。


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

人気Q&Aランキング