1345942360 やりたいこと(A1:AA68の表を下記の条件①②③のルールで印刷したい)

条件①・・・前期または後期の場合の月曜日~日曜日に対して、A1:AA68の表に6×6の31日分の表に"/"を出したい。AB1セルは前期、後期を選べるようになっています。
条件②・・・しかし、DK3:DP8に関数を直接埋め込むことはしない。私はなんとか出来ますが、このブック操作をする初心者にとっては理解不能だから。
条件③・・・そこで、B72:R114に"/"(テキストデータ)を直接埋め込む。これならだれでもできる。その
ルールに従ってDK3:DP8に関数を入れたい。ここからA1:AA68に数式コピーはVBAによってやっているので、問題ありません。DK3:DP8の関数部分(ピンクの部分)をお願いしたいです。ちなみに私は
DK3セルに「=IF(AND($AB$1="前期",$DH$6="月"),VLOOKUP($DJ3,$C$73:$R$78,DK$2+1),VLOOKUP($DJ3,$C$73:$R$78,DK$2+10))」
をいれましたが、火曜日から日曜日の部分まで入りきれません。たぶん、INDEX関数とか
MATCH関数、OFFSET関数などを組み合わせるのかな?と思うのですが、わたしには理解できません。
ですから、そういうページをお知らせするのではなく、具体的に教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/08/28 18:16:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:anglar

ちなみにエクセルの関数でお願いします。バージョンは2003です。

ベストアンサー

id:gong1971 No.2

回答回数451ベストアンサー獲得回数70

ポイント140pt

今回の場合、OFFSET関数とMATCH関数(とIF関数)で実現可能かと思います。
下記の数式でいかがでしょうか?
=OFFSET($D$73,MATCH($DH$6,$B$73:$B$114,0)+$DJ3-2,DK$2-1+IF($AB$1="前期",0,9))

もしくは、こんな書き方も可能です。
=OFFSET($D$73,MATCH($DH$6,$B$73:$B$114,0)+$DJ3-2,DK$2-1+($AB$1="後期")*9)


蛇足ですが、VLOOKUP関数を使用される時は、最後の引数に0を指定した方が良いですよ。

id:anglar

できました。関数の使い方も分かりました。最後のIF文をたし算するのが素晴らしかったです。ありがとうございました。

2012/08/28 18:13:51

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント80pt

DK3セルに「=IF(AND($AB$1="前期",$DH$6="月"),VLOOKUP($DJ3,$C$73:$R$78,DK$2+1),VLOOKUP($DJ3,$C$73:$R$78,DK$2+10))」
をいれましたが、火曜日から日曜日の部分まで入りきれません。


この数式は 月曜日のみ用ですね。

火曜日には どのような数式を入れていますか?

DHとDJの関係が よくわかりませんね。

$DH$6
$DJ3
これらを どのように 変化させたらいいのかを それぞれ曜日ごとに 提示してもらえたらいいと思います。

id:anglar

早速ありがとうございます。ご指摘の通り、月曜日のみなので、このIF関数の続きに火曜日から日曜日まで6日分コピペして所々直して、入れていくのが長すぎるという自分の判断です。

DH6は曜日が一つ分入っていて、それに対して6×6の36個のセルで/を出すか出さないかを決めるということ。その出方のルール例がB72:R114です。B72:R114の/はダミーです。要するにここにどのように設定しても、それがピンクの部分の数式に反映されて、赤いセルが火曜日になれば火曜日の出方になる、といったふうになってほしいということです。

2012/08/26 17:06:03
id:anglar

補足します。ピンクの部分には月曜日でも火曜日でもどの曜日にも対応できるような関数を入れてほしいです。

これができたら、私はVBAで31日分、数式コピーをしているだけです。また、4月から3月はこのシートがコピーされることで、できることになります。

id:gong1971 No.2

回答回数451ベストアンサー獲得回数70ここでベストアンサー

ポイント140pt

今回の場合、OFFSET関数とMATCH関数(とIF関数)で実現可能かと思います。
下記の数式でいかがでしょうか?
=OFFSET($D$73,MATCH($DH$6,$B$73:$B$114,0)+$DJ3-2,DK$2-1+IF($AB$1="前期",0,9))

もしくは、こんな書き方も可能です。
=OFFSET($D$73,MATCH($DH$6,$B$73:$B$114,0)+$DJ3-2,DK$2-1+($AB$1="後期")*9)


蛇足ですが、VLOOKUP関数を使用される時は、最後の引数に0を指定した方が良いですよ。

id:anglar

できました。関数の使い方も分かりました。最後のIF文をたし算するのが素晴らしかったです。ありがとうございました。

2012/08/28 18:13:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません