[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カレンダーを1行に』(まあや)
月初に
B2:H17にカレンダー(日〜土)を作成しています。
これをJ2:AN3に1行のカレンダーに変換したいのです。
今月まではカレンダー(日〜土)の文字部分をコピーして1行カレンダーに貼り付けていました。
来月からJ2:AN2に日付(4/1〜4/30)を入力したら自動で
J3:AN3にカレンダーの文字が表示してくれればいいのに。
SUN MON TUE WED THU FRI SAT 4/1 4/2 4/3 4/4 の は な び
4/5 4/6 4/7 4/8 4/9 4/10 4/11 ら ち る た び に と
↑を↓変換したいのです。 1日(ついたち)は必ずJ2になります。
4/1 4/2 4/3 4/4 4/5 4/6 4/7 4/8 4/9 4/10 4/11 ....... の は な び ら ち る た び に と......
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>B2:H17にカレンダー(日〜土)を作成しています。
と云う事は、ひと月を16行でカバーしている訳ですよね?
31日まである月が土曜日から始まる事もあるので、 最大6週のカレンダーになりますが、16行では半端じゃないですか?
1週で2行を使っているなら12行で済むので4行余りますし、 1週で3行を使っているなら18行必要なので2行足りないです。
それとも、第2週以降が実際に何行目になるかは、決まっていないのですか?
(半平太) 2015/03/26(木) 00:05
これ見る限り、第一週だけ曜日表示行、日付行、文字列行、空白行となっているだけで、
第二週以降は、日付行、文字列業、空白行となっているのではないでしょうか?
それならばぴったり16行になりますが……
(安針) 2015/03/26(木) 05:17
J1に該当の年月を入力(今月なら、2015年4月)で、
J2からAN2のセルの書式設定をユーザー定義でm/dにする
J2=J1
K2=IF(J2="","",IF(MONTH($J$1)=MONTH(J2+1),J2+1,""))
でAN方向にオートフィル
J3=HLOOKUP(J2,$B$3:$H$15,2,0)
K3=IFERROR(HLOOKUP(VALUE(K2,OFFSET($B$3:$H$15,(QUOTIENT(J2,7)-QUOTIENT($J$2,7))*3,),2,0),"")
でAN方向にオートフィル
これで、出来ると思うんですがどうでしょうか?
(安針) 2015/03/26(木) 06:32
ところで
K3=IFERROR(HLOOKUP(VALUE(K2,OFFSET($B$3:$H$15,(QUOTIENT(J2,7)-QUOTIENT($J$2,7))*3,),2,0),"")
これが...この関数に対して、多すぎる引数が入力されています。となります。
どこをどうしたらいいものか教えていたでけないでしょうか?
(まあや) 2015/03/26(木) 22:42
K3=IFERROR(HLOOKUP(K2,OFFSET($B$3:$H$15,(QUOTIENT(J2,7)-QUOTIENT($J$2,7))*3,),2,0),"")
です。
(安針) 2015/03/26(木) 23:04
ちょっと確認だけです。
> B2:H17にカレンダー(日〜土)を作成しています。
1.2015年8月でしたら、8/30と8/31の日付とそれに対応する文字列はどのセルになるんですか? 日付はB18とC18、文字はB19とC19ですか?
2.J3からAN3に文字を入力して、それをB列からH列のカレンダーに反映させるほうが、 数式としてははるかに簡単なんですけど、そういうわけにはいかないんですか?
> K3=IFERROR(HLOOKUP(K2,OFFSET($B$3:$H$15,(QUOTIENT(J2,7)-QUOTIENT($J$2,7))*3,),2,0),"")
3.この式、2015年8月のように土曜日で始まる月でもうまくいきます? (JKT) 2015/03/27(金) 13:31
返事がありませんので、とりあえずの回答です。
> B2:H17にカレンダー これは「B2:H20」のカレンダーの間違い そのカレンダーを参照してJ3以降に文字を表示する(その逆は不可) 上記の通りだとして。
J2: =H3-DAY(H3)+1 K2: =IF(J2="","",IF(MONTH(J2+1)=MONTH($J$2),J2+1,"")) ←既出ですが一応
表示形式「日付」、K2をAN2までオートフィル
J3: =IF(J2="","",INDEX($B$4:$H$19,(WEEKNUM(J2)-WEEKNUM($J$2))*3+1,WEEKDAY(J2))&"")
AN3までオートフィル 左のカレンダーに文字を入力するのは4行目から19行目まで(2行おき)だとしています。
J2の式でH3(第1土曜)を参照していますが、その月の日付が必ず表示されるセルならどれでもかまいません。 左側のカレンダーを更新するとき、どこかにその月の日付を入力しているのなら、そのセルにするほうがよりベターです。
ちなみにJ3以降の数式をHLOOKUPにすると
J3: =IF(J2="","",HLOOKUP(J2,OFFSET($B$3:$H$4,(WEEKNUM(J2)-WEEKNUM($J$2))*3,0),2,FALSE)&"") 前回も書いたように、J3以降に文字を入力して、それを左のカレンダーに表示させるほうが簡単です。 文字を入力するのはどちらでもかまわないということならそのようにすることをお勧めします。 (JKT) 2015/03/28(土) 02:41
一応応急処置で、
K3=IFERROR(HLOOKUP(K2,OFFSET($B$3:$H$18,(QUOTIENT(J2,7)-QUOTIENT($J$2,7)+(MOD($J$2,7)=0)*1)*3,),2,0),"")
からオートフィルで土曜日から始まる月だと2日目以降を一つ下の段にして、それ以外の月は従来通りにする対応できますが、結局は素人の生兵法には違いありませんね。
(安針) 2015/03/28(土) 05:49
こんにちは JKTさん 安針さん 返事がおそくなりまして申し訳ありません。 数式をそのまま使いたいのですが、わからないままだと後で困りそうです。 中身を確認しながら進みたいので一旦解決とさせてください。
JKTさん >J3以降に文字を入力して、それを左のカレンダーに表示させるほうが簡単です。 >文字を入力するのはどちらでもかまわないということならそのようにすることをお勧めしま す。 これはそもそも左のカレンダーが存在して でそれをそのまま引き継いで で右のカレンダーが個人的に必要になって...という経緯なのです。 簡単ということであればそちらを教えていただければ助かります。
よろしくお願いします。
(まあや) 2015/03/28(土) 10:29
> J3以降に文字を入力して、それを左のカレンダーに表示させる
■右のカレンダー
J2: =H3-DAY(H3)+1 K2: =IF(J2="","",IF(MONTH(J2+1)=MONTH($J$2),J2+1,""))
曜日も表示させたほうがいいと思います。 2行目が 4/1(水) という表示でよければ、 表示形式のユーザー定義を m/d(aaa) にしてください。
K2をAN2までオートフィル
3行目に文字を入力します。
■左のカレンダー
B4: =IF(B3="","",INDEX($J$3:$AN$3,DAY(B3))&"")
H4までオートフィル
B4:H4をコピーして、B7・B10・B13・B16・B19に貼り付けてください。
19行目はB19とC19にだけ数式があればいいので、D19:H19は消去してください。
以上です。月をいろいろと変更しても正しく表示されるか確認してください。 例えば2015年4月のカレンダーなら、4/1は水曜日なのでB3からD3に日付は表示されないはずですね。 にもかかわらずB4からD4に何かが表示されたとします。 ということはB3からD3は、見た目は空白ですが何か1文字以上の値が入っていることになります。 その場合は上の数式を変更しないといけませんので、 B3:H3にどんな数式を入れているのかお知らせください(左のカレンダーの日付は数式で出してるんですよね?) 条件付き書式を使っているのならその内容もお願いします。 (JKT) 2015/03/28(土) 13:26
JKTさん ありがとうございます。 いろいろお世話になりました。 検証中ですのでわからないときはまた質問させてください。 安針さん ありがとうございました。
(まあや) 2015/03/29(日) 12:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.