Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。

<Sheet1>
  A列  B列  C列
1 2008/6/1 ★  320
2 2008/6/1 ☆  300
: : :

Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。

良い式がありましたら教えて下さいm(_ _)m

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

A 回答 (3件)

> 同じ条件が成立する複数の行は存在しないので、その条件は不要


> エラー表示はさせず、空白にしたい

以下のようにしてみてください。

=IF(SUMPRODUCT((A1:A5="2008/6/1"*1)*(B1:B5="☆"))=0,"",INDEX(C:C,SUMPRODUCT((A1:A5="2008/6/1"*1)*(B1:B5="☆")*ROW(A1:A5))))
    • good
    • 14

まったく見当が付かないというのでしょうか。


INDEX,MATCH,LOKKUP,VLOOKUP,SUMPRODUCTなどの関数を組み合わせてみてはいかがでしょう。(IF関数も使うかもしれません)
組み合わせ方によって様々な手法があります。質問者自身で考えた方法についてそれが正しく動くようアドバイスを求める方が、知識として身につくと思います。
まったくお手上げというのであれば、他の方の手法を参考にすることで理解が深まると思いますが、まずは自分で考えた方法を示してみましょう。
きっと良い解決方法をアドバイスしていただけると思います。

さて、続いて質問内容について補足を求めます。
同じ条件が成立する複数の行があった場合、全てを抽出するのでしょうか。
一番上、または一番下にある行を抽出するのでしょうか。
それによって答えはまったく異なる物になります。
また、条件に一致する物がない場合はどのようにするかです。
エラーが表示されても良いのか、エラーなど表示せず空白にするのか、条件に一致する物が無いことを示すメッセージを表示するのか、など。
(こういう事を考えることで処理の方法を理解できるようになります。是非考えてください。)

この回答への補足

補足させて頂きます。

>同じ条件が成立する複数の行があった場合、全てを抽出するのでしょうか。一番上、または一番下にある行を抽出するのでしょうか。

同じ条件が成立する複数の行は存在しないので、その条件は不要です。

>また、条件に一致する物がない場合はどのようにするかです。
 エラーが表示されても良いのか、エラーなど表示せず空白にするのか。

エラー表示はさせず、空白にしたいです。

補足日時:2009/05/18 12:25
    • good
    • 2

一例です。


=INDEX(C:C,SUMPRODUCT((A1:A5="2008/6/1"*1)*(B1:B5="☆")*ROW(A1:A5)))
    • good
    • 6

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

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

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

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

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

Qエクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてくだ

エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてください。

               A列   B列    C列
Aファイルには 行 【注文月日】、【氏名】、【商品金額】が記入されています。
Bファイルには 行 【注文月日】、【氏名】、【税金額】が記入されています。

AファイルのD列に、Aファイルの【注文月日】かつ【氏名】がBファイルの【注文月日】かつ【氏名】と一致する場合のBファイルC列の【税金額】を表示したいのです。

VLOOKUP関数では条件が1つだけなので使用できませんが、似たような関数で複数条件ができる関数があるなら教えてください。

Aベストアンサー

こんばんは!
一例です。
↓の画像で右側(Bファイル)の方に作業用の列を設けています。
作業列D2セルを
=A2&B2
としてオートフィルで下へずぃ~~~!っとコピーします。

そして、AファイルのD2セルに
=IF(OR(A2="",COUNTIF([Bファイル.xls]Sheet1!D$2:D$1000,A2&B2)=0),"",INDEX([Bファイル.xls]Sheet1!C$2:C$1000,MATCH(A2&B2,[Bファイル.xls]Sheet1!D$2:D$1000,0)))
という数式を入れ、オートフィルで下へコピーすると
画像のような感じになります。
尚、数式はBファイルの1000行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてみてください。

以上、参考になれば良いのですが
他に良い方法があれば読み流してくださいね。m(__)m

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行までとしていますが、必要に応じて変更して下さい

Qエクセル 複数条件での検索を関数を使って解決したいです。

エクセル関数を使って複数の条件を満たしたときの
特定のセルの文字列を返す方法を考えています。

例を挙げると

   A    B    C     D    E    F
1  金額  日付  名称   金額  日付 名称
2  100  1月5日  a    100  2月1日 =???
3  200  1月5日  b
4  300  1月6日  c
5  400  2月1日  d
6  100  2月1日  XYZ
7  100  2月3日  e
8  200  2月3日  f

上のような表のときに
金額=「100」 かつ 日付=「2月1日」 という2つの条件を
満たしたときのC列の文字列「XYZ」を返すということをやりたいのです。

金額だけですとVLOOKUP関数を使って
=VLOOKUP(D2,A2:C8,3,false)
とやって「a」という文字列はかえってくるのですが
どうやっても「XYZ」という文字列が返せません。
(日付の条件を入れていないので当たり前ですが...)

なにかいい方法がありましたらお願いします。

エクセル関数を使って複数の条件を満たしたときの
特定のセルの文字列を返す方法を考えています。

例を挙げると

   A    B    C     D    E    F
1  金額  日付  名称   金額  日付 名称
2  100  1月5日  a    100  2月1日 =???
3  200  1月5日  b
4  300  1月6日  c
5  400  2月1日  d
6  100  2月1日  XYZ
7  100  2月3日  e
8  200  2月3日  f

上のような表のときに
金額=「100」 かつ 日付=「2月...続きを読む

Aベストアンサー

◆こんな方法もありますよ
=INDEX(C2:C8,MATCH(D2&E2,INDEX(A2:A8&B2:B8,),0))

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ある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

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エクセルのIF関数で、文字が入力されていたならば~

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

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

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

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

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

宜しくお願いします。

Aベストアンサー

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

でどうでしょうか?

Qexcel 複数条件の値を返す Vlook条件2つ以上の場合

質問集を探しましたが、該当するものを探すことが出来なかったので、質問させてください。
エクセルデータで以下のような基データ表があるとします。

【表1】
A          B          C           D           E
商品NO    商品名    店舗名    売上数    売上額 
123        ガム       東京        10        100
123        ガム       大阪        20        200
345        チョコ      東京        40        200
345        チョコ      大阪        30        150
345        チョコ      北海道       10        50
678        アメ       東京         20        80
678        アメ       北海道        10        40

↓↓のように値を求めたい。
【表2】
A          B          C           D           E           F 
商品NO    商品名     店舗名→    東京      大阪     北海道
123        ガム        売上数      10         20        N/A
                   売上額      100        200        N/A
345        チョコ        売上数      40         30        10
                   売上額      200        150        50
678        アメ         売上数      20         N/A        10
                   売上額      80        N/A        40

表1を表2のように少々形を変え、引っ張ってきたいのです。
商品NO(or商品名)と店舗名と売上数(or売上額)の3つの条件が
あるものを引っ張っていくにはどうすればいいのか。
表2のD2~F7に置く関数を教えてください。

出来れば、作業列など作らずにひとつの式で片付けたいのですが、
教えていただけますでしょうか。

質問集を探しましたが、該当するものを探すことが出来なかったので、質問させてください。
エクセルデータで以下のような基データ表があるとします。

【表1】
A          B          C           D           E
商品NO    商品名    店舗名    売上数    売上額 
123        ガム       東京        10        100
123        ガム     ...続きを読む

Aベストアンサー

【表1】がSheet1のA1:E8に入っているとして、

【表2】が別シートにあるものとして、

 D2に  =SUMPRODUCT((Sheet1!$A$2:$A$8=$A2)*(Sheet1!$C$2:$C$8=D$1),Sheet1!$D$2:$D$8)

 D3に  =SUMPRODUCT((Sheet1!$A$2:$A$8=$A2)*(Sheet1!$C$2:$C$8=D$1),Sheet1!$E$2:$E$8)

と入力して、横にコピー(E・F列)し、その後、D2:F3を選択して下にコピーでOKだと思います。

表1に複数行たとえば、ガム-東京の入力があっても大丈夫です。該当する複数の行のデータが足されて集計されます。

なお、商品NOと商品名は1対1対応のようなので、商品NOをもとに計算してあります。

Qエクセルで2つの条件からデータ抽出方法

エクセルで、2つの列の合致する部分のデータを簡単に取り出したいのですが、よい方法はありませんか?今は表を追って必要部分のデータを書きだしているのですが・・・。

       4月5月6月7月8月9月10月11月12月1月2月3月
1グループ 8 5 6 1 2 3 3 2 8 2 3 1
2グループ 1 5 2 3 4 4 5 2 1 8 9 2
3グループ 3 4 5 2 2 1 1 7 9 3 6 5
 
上記の表の中から、1グループの12月のデータ8を取り出す場合、それぞれの列を追っていき、交差部分を見ますが、それを、別のセルに○グループ○月と入れれば、上記表の該当数値がぱっと出る方法はないでしょうか??   上記表のグループと月のそれぞれの数字をうまく対応させた表を作れず、見にくくてすみません・・・。

よろしくお願いいたします!!

Aベストアンサー

こんばんは!
参考になるかどうか分かりませんが・・・
↓の画像のように表を作ってみました。

B7セルには
=IF(OR(A7="",B6=""),"",INDEX(B2:M4,MATCH(A7,A2:A4,0),MATCH(B6,B1:M1,0)))
という数式が入っています。

尚、この場合月の部分は○月と入力しなければならないので
データの月の部分が数値だけであれば、B6セルも数値だけの入力で済みます。

これで希望に近い形になるでしょうか?

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

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【エクセル】表から条件に合ったデータを別シートに順番に抽出したい

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
74 PC
75 ペン
76 モニタ



80 


【補足】
元の表(シート1)を編集することがあるので
自動的に反映されるよう、関数で作成できたらと思います。
シート2の構成上、抽出後のソートや、フィルタオプションは避けたいです。

わかりづらい文章で申し訳ございませんが
どなたかいいアドバイスがありましたら教えてください。
お礼は明日になってしまいますが、必ずご返答いたします。
よろしくお願いいたします。

 

エクセルの表である条件にあてはまる行を
別シートに順番に抽出されるような関数を教えてください。


シート1のB列にあるデータが"渋谷区"のとき
シート2のE74からE80くらいまでに
シート1のC列のデータを上から順に抽出されるようにしたいです。

【シート1】
A        B         C
1 東京都 渋谷区  PC
2東京都  港区  PC
3東京都 新宿区  マウス
4東京都 渋谷区  ペン
5東京都 渋谷区  モニタ



10

【シート2】

E
...続きを読む

Aベストアンサー

>E74に関数を入力し、その後関数をE80までドラッグすればよいのでしょうか?
いいえ。
1.
=INDEX(シート1!C1:C11,SMALL(IF(シート1!B1:B10="渋谷区",ROW(A1:A10),11),ROW(A1:A10)))&""
の数式を掲示板上でコピーします(シート名は合わせてください)
2. E74:E80セル範囲を選択します
3. 数式バーで[Ctrl]+[V]貼り付け
4. [Ctrl]+[Shift] +[Enter] でセルへの入力を確定させます

>その際、絶対参照や相対参照は必要でしょうか?
セルのコピーはしませんので不要です。
参考まで


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

人気Q&Aランキング

おすすめ情報