dポイントプレゼントキャンペーン実施中!

O列とQ列のそれぞれ20000行まで文字列が入力されていて、
P列とR列の20000行までは数値が入力されています。
O列とP列,Q列とR列をそれぞれのグループと考えて、
例えばO1とQ5が一致したら、P1とR5を引き算したいです。
どのような関数で可能でしょうか…?

質問者からの補足コメント

  • すみません…一致するものはひとつのみで
    一致しないものも出てきますm(_ _)m

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/05/10 12:15
  • データの並べ替えはしてもいいのですが
    一致しないデータも出てくるので、ズレが生じてしまうんです(>_<)

    引き算はPからRを引きます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/05/10 12:17

A 回答 (4件)

こんにちは



一致するものが複数あったり、一致しなかったらどうするのかなど不明点が多すぎて関数式にしようがありませんけれど、雰囲気のみで・・・

 =IF(ISERROR(MATCH(O1,Q:Q,0)),"",P1-INDEX(R:R,MATCH(O1,Q:Q,0)))
とか
 =IF(ISERROR(MATCH(O1,Q:Q,0)),"",P1-VLOOKUP(O1,Q:R,2,FALSE))
みたいな感じで可能なのではないかと想像します。

※ 実際になさりたいことに合わせた調整は、質問者様の方でなさってください。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます!希望通りのものが出来ました!
説明足らずでしたが、早い回答で大変助かりましたので、ベストアンサーにさせていただきます!

お礼日時:2017/05/10 17:40

O1に一致するものをQ1からQ20000の中から探すのですよね。



この場合、
 =MATCH(O1,$Q$1:$Q$20000,0)
で、一致する行の位置を取得できます。
P1を基準にした場合に、R列から取得した行の位置を指定して引き算
すれば、希望している計算になるのでは?

こちら↓は、ISNA関数でエラーの場合の対応をしています。
 =IF(ISNA(MATCH(O1,$Q$1:$Q$20000,0)),"",P1-INDIRECT("R"&MATCH(O1,$Q$1:$Q$20000,0)))
これで対応できませんか?
    • good
    • 2
この回答へのお礼

ありがとうございます!解りやすい説明で大変参考になりました!!

お礼日時:2017/05/10 17:38

>一致しないデータも出てくるので、ズレが生じてしまうんです(>_<)



何がズレるんですか?
一致するものが固まるだけでずいぶん楽になると思いますが…
具体例を出すことはできませんか?
    • good
    • 0

・データを並べ替えしてはいけないのですか?


・引き算は上にあるデータから下にあるデータを引くのですか?それとも大きい方から小さい方を引くなどのルールがあるのですか?
この回答への補足あり
    • good
    • 0

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