- ベストアンサー
エクセル 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に表示したいときどうすればよいですか?? よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
以下質問の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)
たいしたことではないけど訂正します。 No4の書き込みで 誤:「No2です。 > 安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか??」 正:「No2の補足で、 > 安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか??」 まるでわたしがNo2さんのような書き方でした。スミマセン(笑)
- error123
- ベストアンサー率21% (54/247)
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)
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列、とかデータは何行目から入っているとか・・・。 目安でいいのでデータ量(行数)も書かれるといいかもしれませんね。
- shishishishi
- ベストアンサー率39% (362/921)
一行目が項目名で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でない場合は修正してください。
補足
ありがとうございます。 無事に数式が出来ました。 逆に安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか?? お手数ですが、よろしくお願いします。
- mshr1962
- ベストアンサー率39% (7417/18945)
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),""))
お礼
早期のご回答ありがとうございます。
補足
丁寧なご解説ありがとうございます。 ちゃんと表示されました。 追加でお聞きしたい事があるのですが、 逆に安値の値が損切りの値より低い場合、その安値の値をEに表示したいときどうすればよいですか?? お教えいただいた上記の式を元に色々試したのですが、数式が作れておりません。 データ行は現在1100ほどです。 お手数ですが、よろしくお願いします。