こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルとIF関数について

エクセル初心者です。

今、下の画像上段のような、データ(シート1)をエクセル2007で作成しました。

売上と販売形式、場所、そして報告形式があります。

今、シート2のAからC列に販売形式、売上場所、売上金額を
手入力で入れてみました。


ここでしたい処理ですが、IF関数を使って、シート2の4列目に自動的に報告形式が
表示される数式を作りたいのです。

単純なIF関数はわかるのですが、この場合、AND関数をどうやってつくっていいか
わかりませんでした。

教えてください。お願いします。

マルチメディアファイルは削除されたか見つかりません。

投稿日時 - 2011-05-14 21:50:40

QNo.6737734

すぐに回答ほしいです

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

こんばんは!
一例です。

Sheet1の「100万以上」等々が文字列だと思いますので、これではかなり難しくなります。
そこで「○○万以上」となっているセルの表示形式を数値に変えておきます。
画像ではC2~E5セルを範囲指定 → 右クリック → セルの書式設定 → ユーザー定義 を選択し
G/標準 となっている欄に
0万以上
と入力して、そのセルは 100 のように数値のみを入力しておきます。
そうすれば画像のような表示になりますので、関数で対応できると思います。

お示しの画像の配置だとして、Sheet2のD2セルに

=IF(COUNTBLANK(A2:B2),"",IF(A2="直売",IF(C2>=1000000,Sheet1!$B$2,"報告不要"),IF(ISERROR(INDEX(Sheet1!$B$3:$B$5,MATCH(C2/10000,OFFSET(Sheet1!$B$3:$B$5,,MATCH(B2,Sheet1!$C$1:$E$1,0),,1),1))),"報告不要",INDEX(Sheet1!$B$3:$B$5,MATCH(C2/10000,OFFSET(Sheet1!$B$3:$B$5,,MATCH(B2,Sheet1!$C$1:$E$1,0),,1),1)))))

という数式を入れオートフィルで下へコピーではどうでしょうか?m(__)m

投稿日時 - 2011-05-14 22:38:33

補足

TOM04さんありがとうございました。完ぺきでした。
数式は難しいですね。考えてみましたが。

追加で質問なのですが、金額が以下のような金額(0万以上)
東京  大阪   名古屋
100250160
250250160
10001000500
010000

はどうなるのでしょうか。
さらに複雑になるのでしょうか。

よろしくお願いします。

投稿日時 - 2011-05-14 23:30:00

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

Sheet1に検索表で(関数式なし)
通販東京通販大阪通販名古屋直売東京直売大阪直売名古屋
000報告不要000報告不要
100100100報告不要100100100支店報告
400300200本店報告
500400300支部報告
600500400本部報告
を作る。
ーー
Sheet2で  テストデータ A2:E30(A-C列が素データ、結果はD列、E列は作業列)

通販東京99報告不要1
通販東京299報告不要1
通販東京399報告不要1
通販東京499本店報告1
通販東京599支部報告1
通販東京699本部報告1
通販大阪99報告不要2
通販大阪299報告不要2
通販大阪399本店報告2
通販大阪499支部報告2
通販大阪599本部報告2
通販大阪699本部報告2
通販大阪799本部報告2
通販名古屋99報告不要3
通販名古屋299本店報告3
通販名古屋399支部報告3
通販名古屋499本部報告3
通販名古屋599本部報告3
通販名古屋699本部報告3
通販名古屋799本部報告3
直売東京99報告不要1
直売東京199支店報告1
直売東京299支店報告1
直売大阪99報告不要2
直売大阪199支店報告2
直売大阪299支店報告2
直売名古屋99報告不要3
直売名古屋199支店報告3
直売名古屋299支店報告3
E列の式はE2に=IF(A2="通販",MATCH(A2&B2,Sheet1!$A$2:$C$2,0),MATCH(A2&B2,Sheet1!$E$2:$G$2,0))
式を下方向に式複写。
メインの D列はD2に=IF(A2="通販",INDEX(Sheet1!$D$1:$D$7,MATCH(C2,OFFSET(Sheet1!$A$1,0,E2-1,7,1),1)),INDEX(Sheet1!$H$1:$H$7,MATCH(C2,OFFSET(Sheet1!$E$1,0,E2-1,7,1),1)))
式を下方向に式複写。
E列は式が長くなるので分けた。
このやり方に興味があれば、内容が正しいか十分チェックしてください。
ーー
やはりVBAの世界に持ち込まないと式が複雑になるように思う。
表の構成の仕組みだけではすっきりする方法はないのではないか。

投稿日時 - 2011-05-14 23:44:20

ANo.2

行いたいことはわかったし、図の添付でレイアウトもわかった。
でも、計算方法の説明がない。
初心者に回答者の数式から考えを読み取ってもらうのも辛いものがある。
最低限だとは思いますが、少しだけ説明を加えつつ、数式を提示してみます

C2:E5セルは 計算しやすいように数値にします。
100万以上 → 1000000
各売上場所の売上条件は、昇順になっているとします。(違っている場合は下記無視)

J2セル
=IF($I2<INDEX($C$2:$E$2,,MATCH($H2,$C$1:$E$1,0)),"報告不要",
INDEX(B$2:B$5,MATCH($I2,INDEX($C$2:$E$5,,MATCH($H2,$C$1:$E$1,0)))))
下へオートフィル
各売上場所の最低金額(C2:E2)を下回っていれば、報告不要。そうでないなら
売上場所の列(C,D,E)において、売上がどの範囲(行)収まっているかを調べ、
その時の報告形式を返す。販売形式を計算に入れていないことに注意。

ちなみに、販売形式を出すならK2セルに
=IF($I2<INDEX($C$2:$E$2,,MATCH($H2,$C$1:$E$1,0)),$A$2,
INDEX(A$2:A$5,MATCH($I2,INDEX($C$2:$E$5,,MATCH($H2,$C$1:$E$1,0)))))
下へオートフィル

最後にG:K列を切り取って Sheet2へ貼り付け。

投稿日時 - 2011-05-14 23:41:08

あなたにオススメの質問