• ベストアンサー

エクセル 複数条件のIF関数 

0から360の数字がランダムに入力されているA列があります。この数字を以下の条件でB列に入力したいのです。 (1)288以上なら280を引く (2)144以上なら144を引く (3)72以上なら72を引く (4)72未満ならその数字のまま入力 結果として、72未満の数字がB列に入力されることになります、 IF関数を使えばできるのかなと思いますが、違う方法でもよいです。 4万セルくらいを処理するので一番簡単な方法を教えてください。 よろしくお願いいたします。

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

質問文の条件通りにした場合 =A1-LOOKUP(A1,{0,72,144,288},{0,72,144,280}) となりますが、これはA列の値が217~287及び352~360の場合、結果が72以上になってしまいます。 条件(1)は「280を引く」ではなく「288を引く」ではありませんか? 「216以上なら216を引く」という条件が抜けていませんか? もしそうであるなら、No.1の回答の =MOD(A1,72) が一番シンプルだと思います。

honeybeans
質問者

お礼

ご指摘の2点、その通りです。すみません。 こんなシンプルな解決があったなんて感激です。 どうもありがとうございました!

その他の回答 (2)

回答No.2

以下となれば良いのでしょうか? A B .1....0....0 .2....1....1 .3...10...10 .4...71...71 .5...72....0 .6...73....1 .7..143...71 .8..144....0 .9..145....1 10..287..143 11..288....8 12..289....9 文字間の空白が圧縮されてしまうので文字間に.をいれました。 見難いでしょうが、「.」を空白として見てください。 でしたら (1)セル:B1に以下を書き込んでください。   =IF(A1>=288,A1-280,IF(A1>=144,A1-144,IF(A1>=72,A1-72,A1))) (2)セル:B1をCOPYし、セル:B2~該当する列分貼り付けてください。 上の回答は、A列を1列目から参照する事としています。 もし、項目見出しなどで 参照したい列が例えば3列目からとする場合には (1)セル:B3に以下を書き込んでください。   =IF(A3>=288,A3-280,IF(A3>=144,A3-144,IF(A3>=72,A3-72,A1))) (2)セル:B3をCOPYし、セル:B4~該当する列分貼り付けてください。

honeybeans
質問者

お礼

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

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

>(1)288以上なら280を引く これは、「288を引く」の誤りではなく、「280を引く」でよろしいですか? その部分だけ変則なので、以下の式でどうでしょうか? =IF(A1>=288,A1-280,MOD(A1,72)) 「288を引く」だった場合、もっと簡単で以下で出来ます。 =MOD(A1,72)

honeybeans
質問者

お礼

ご指摘のとおり間違いです。すごく簡単な方法を教えていただきありがとうございました!

関連するQ&A