• ベストアンサー

エクセル 2つのSheetでデータの抽出と対比。

Sheet1 コード   安値   終値 2260    1523   1524 3060    2900   2950 4500    2290   3232 7703    339    350 9011    550    650 Sheet2 コード   損切り  利確    C    2260    1500   2000 3060    3000   4000 9011    500    600 上記の表にとき、 コードが同一での終値の値が利確の値より高い場合、その終値の値をCに表示したいときどうすればよいですか?? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

以下質問のSheet1は下記ではSheet3、Sheet2はSheet4です。済みません。 Sheet4のA2の2260の、Sheet3のに存在する行はスタート行A2から=MATCH(A2,Sheet3!$A$2:$A$7,0)で求められます。そして終値は =INDEX(Sheet3!$A$2:$C$7,MATCH(A2,Sheet3!$A$2:$A$7,0),3) で求められます。これが利確C2より大きい場合は終値を セットするですから =IF(INDEX(Sheet3!$A$2:$C$7,MATCH(A4,Sheet3!$A$2:$A$7,0),3)>C4,INDEX(Sheet3!$A$2:$C$7,MATCH(A4,Sheet3!$A$2:$A$7,0),3),"") です。 (データ)Sheet3 コード 安値 終値 2260 1523 1524 3060 2900 2950 4500 2290 3232 7703 339 350 9011 550 650 (結果)Sheet4(途中データD、F列も含む) コード 損切り 利確 第何行 終値 C 2260 1500 2000 1 1524 3060 3000 4000 2 2950 9011 500 600 5 650 650 VLOOKUPとMATCH、INDEXは同様のことができます。

その他の回答 (5)

  • error123
  • ベストアンサー率21% (54/247)
回答No.6

たいしたことではないけど訂正します。 No4の書き込みで 誤:「No2です。 > 安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか??」 正:「No2の補足で、 > 安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか??」 まるでわたしがNo2さんのような書き方でした。スミマセン(笑)

  • error123
  • ベストアンサー率21% (54/247)
回答No.4

No2です。 > 安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか?? =IF(VLOOKUP(A2,Sheet1!$A$2:$C$1100,2,FALSE)<B2,VLOOKUP(A2,Sheet1!$A$2:$C$1100,2,FALSE),"") これをE2に入れてドラッグしてください。 データはA2からC1100まであるものとしました。

  • gloomie
  • ベストアンサー率16% (24/146)
回答No.3

sheet1のデータはA2からC10に入力されているとします。 sheet2はA列にコード、B列に損切り、C列に利確、D列に数式を入れるとし、1行目は見出しとします。 sheet2のD2に =IF(VLOOKUP(A2,Sheet1!$A$2:$C$10,3)>C2,VLOOKUP(A2,Sheet1!$A$2:$C$10,3),"") 【注意点】 1) sheet2に入力したコードがsheet1に無い場合エラー表示になります。 (無いものは入力しないという前提で考えました) 2) 利確>=終値の場合は何も表示されません。 もし利確を表示したいのであれば数式の""をC2に変更してください。 レイアウトをもう少し詳しく書かれると回答もしやすくなります。 この項目はA列、とかデータは何行目から入っているとか・・・。 目安でいいのでデータ量(行数)も書かれるといいかもしれませんね。

ahoudorijp
質問者

補足

丁寧なご解説ありがとうございます。 ちゃんと表示されました。 追加でお聞きしたい事があるのですが、 逆に安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか?? お教えいただいた上記の式を元に色々試したのですが、数式が作れておりません。 データ行は現在1100ほどです。 お手数ですが、よろしくお願いします。

回答No.2

一行目が項目名でA2セル以下に上記のデータが入っているとして Sheet2のコードは必ずSheet1のデータにある場合 =IF(VLOOKUP(A2,Sheet1!$A$2:$C$6,3,FALSE)>C2,VLOOKUP(A2,Sheet1!$A$2:$C$6,3,FALSE),"") 上記式をsheet2のD2セル(項目Cの列)に入れてドラッグしてください。 なお、Sheet1のリスト範囲が$A$2:$C$6でない場合は修正してください。

ahoudorijp
質問者

補足

ありがとうございます。 無事に数式が出来ました。 逆に安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか?? お手数ですが、よろしくお願いします。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

D2=IF(OR(A4="",COUNTIF(Sheet1!$A:$A,A4)=0),"",IF(VLOOKUP(A4,Sheet1!$A$2:$C$6,3,FALSE)>C4,VLOOKUP(A4,Sheet1!$A$2:$C$6,3,FALSE),""))

ahoudorijp
質問者

お礼

早期のご回答ありがとうございます。

関連するQ&A