前提条件を確認させて下さい。
>現在、1シートに複数月を表示しています(A6からU120程度までの範囲(約3ヶ月))
>VBAによる複数月の取得範囲が2014/12/1~2015/3/1ですと2015/1/1はA44に。1~3月ですとA7にきます。
Sheet7に複数月が表示される場合、少なくとも「『一番下に表示されている月』以外の月」は1日~月末までのデータが表示されるものと考えておけば宜しいのでしょうか?
つまり、例えば取得範囲が2014年12月~2015年3月の場合は、少なくとも2014/12/1~2015/2/28の範囲のデータは必ず全て表示されていて、例えば「2014年12月分が10日から始まっている」とか「2015年2月分が20日までしか表示されていない」という様な事は無いと考えておけば宜しいのでしょうか?
後、
>取得データは
>A3に2015年1月(2015/1/1)括弧内は実際のセル内の値です。
> A T
>5:日 ・・・ 天気
>6:1 晴
>7:2 雨
>8:3 薄曇
>というような形になっています。
という事から考えて、
>複数月の取得範囲が2014/12/1~2015/3/1ですと2015/1/1はA44に。
の場合も、「『2015年1月』と表示されているセル」の3つ下のセルに2015/1/1の日付である事を示す数値の1が表示されていて、その「2015/1/1の日付である事を示す数値の1が表示されているセル」と同じ行のT列に「2015/1/1の天気のデータ」が入力されているものと考えておけば宜しいのでしょうか?
もし上記の前提条件の確認事項が全てyesである場合には、Sheet1のA8セルに入力する関数を次の様なものにされると良いと思います。
=IF(ISNUMBER(1/(YEAR(AA7)>1871)),IF(ISERROR(1/(VLOOKUP(DAY(AA7),OFFSET(INDEX(Sheet7!$A:$A,MATCH(EOMONTH(AA7,-1)+1,Sheet7!$A:$A,0)),1,,DAY(EOMONTH(AA7,0))+2,21),20,FALSE)<>"")),"",LEFT(VLOOKUP(DAY(AA7),OFFSET(INDEX(Sheet7!$A:$A,MATCH(EOMONTH(AA7,-1)+1,Sheet7!$A:$A,0)),1,,33,21),20,FALSE),FIND("後",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(VLOOKUP(DAY(AA7),OFFSET(INDEX(Sheet7!$A:$A,MATCH(EOMONTH(AA7,-1)+1,Sheet7!$A:$A,0)),1,,33,21),20,FALSE),"時々","後"),"一時","後"),"、","後")&"後")-1)),"")
お礼
ここまでおつきあい頂き、本当にありがとうございます。
補足
全てYesですので、ご呈示頂いた関数を使用させていただくと月が変わっても範囲をきりかえることなく表示できました。 現状、どうなっているのか理解が難しいので、徐々に読み解いて行きたいと思います。 ただ、12月から3月までを表示したときに、なぜか12/31だけが空白になってしまいます。取得範囲を11~2、12~3など切り替えても同じ結果になります。 その1日だけなので、不思議なのです。