ぱっと見、eddateBというのをセットしていないようですが
これは 何をセットしているのでしょうか?
うまくいかないのは この初期化されていない変数を使ってるのが
原因ではないでしょうか?
何が うまくいかないのかは よくわからないのですが
Worksheets("schedule").Cells(i, 1).Value =
は
Worksheets("schedule").Cells(i, 2).Value =
なのでは なかろうかと思います。
VBAを下記に修正します。
Dim eddateA As Date
For i = 2 To 10
eddateA = Cells(i, 1)
Worksheets("schedule").Cells(i, 2).Value = Application.VLookup(DateSerial(Year(eddateA), Month(eddateA), Day(eddateA)), Worksheets("term").Range("$A:$B"), 2)
Next
▽3
●
Silvanus ●100ポイント ![]() |
TERM SHEETの内容等の情報が明らかにされていないので
どの様な点でお困りなのかが判然としないのですが、
敢えてユーザー定義関数にされなくとも、下記の様な式の記述で
事足りるのではないかと思いますが、いかがでしょうか。
もっと簡潔に書けるかも知れませんが…。
※A2に格納された日付情報を元に年度四半期を表示させる場合
=CONCATENATE(RIGHT(TEXT(IF(MONTH(A2)<4,YEAR(A2)-1,YEAR(A2)),"0"),2),"FY",INT(MOD(MONTH(A2)+8,12)/3)+1,"Q")
どうしてもユーザー定義関数とされるのであれば、これでいかがでしょうか。
Function FYandQ(dateVal As Date) As String FYandQ = Right(Str(Year(dateVal) + (Month(dateVal) < 4)), 2) & "FY" & Format(Int(((Month(dateVal) + 8) Mod 12) / 3) + 1, "0") & "Q" End Function