人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelです。この式をもう少しスマートに書けませんか…?

=IF(OR(C1="o",C1=1),IF(OR(B1="o",B1=1),IF(OR(A1="o",A1=1),1,2),IF(OR(A1="o",A1=1),3,4)),IF(OR(B1="o",B1=1),IF(OR(A1="o",A1=1),5,6),IF(OR(A1="o",A1=1),7,8)))

A1:C8に "o" か 1 か "x" が入っています。
それぞれの行ごとに、 o 1 x の組み合わせを見て D列に 1?8 の数字を表示させています。

ex) A1=o B1 =o C1=o → D1=1
ex) A1=o B1 =o C1=1 → D1=1

VBAやマクロは使わないで、すっきりまとめられないでしょうか?

●質問者: panana
●カテゴリ:コンピュータ
✍キーワード:A1 D1 EX Excel VBA
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● dungeon-master
●27ポイント ベストアンサー

=IF(C1="x",4,0)+IF(B1="x",2,0)+IF(A1="x",1,0)+1

で、どうでしょう

◎質問者からの返答

えっ。ウソ!なんで!?←正直な気持ち。

期待通りの結果になってます。

まったく思いつかなかった方法なので、あとで順を追ってみます。

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


2 ● tawazou
●21ポイント

以下の式でも同じ結果が得られると思います。

=IF(OR(C1="o",C1=1),0,4)+IF(OR(B1="o",B1=1),1,3)+IF(OR(A1="o",A1=1),0,1)

◎質問者からの返答

1番さんのもそうなんですが、条件によって返す数字を足していくんですね。

「条件によって返す数字」を見極めるられるのがすばらしいと思います…。

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


3 ● piring
●21ポイント

【1】Sheet2に以下のデータを作成しておきます。

列A 列B

111 1

11o 1

1o1 1

1oo 1

o11 1

o1o 1

oo1 1

ooo 1

x11 2

x1o 2

xo1 2

xoo 2

1x1 3

1xo 3

ox1 3

oxo 3

xx1 4

xxo 4

11x 5

1ox 5

o1x 5

oox 5

x1x 6

xox 6

1xx 7

oxx 7

xxx 8

【2】セルD1に以下の数式を入力します。

=VLOOKUP(A1&B1&C1,Sheet2!$A$1:$B$27,2,FALSE)

◎質問者からの返答

VLOOKUP関数!忘れてました。

(というか過去に挫折して封印してました。以降力技で…)

こういうときに使えるものなんですね。

希望通りの結果になりました。

この機にHELPと格闘してみます。

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


4 ● ヨネちゃん
●21ポイント

=8-IF(OR(C1="o",C1=1),4,)-IF(OR(B1="o",B1=1),2,)-IF(OR(A1="o",A1=1),1,)

ではどうでしょうか。

◎質問者からの返答

引き算していらっしゃる…。

ひとつの答えを出すのに、本当にいろいろな方法があるものですね!

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ