"SCHEDULE SHEET" A列に記載された年・日・時間のデータを使ってB列に"10FY1Q"等Quater毎のterm情報を記載したいと思っています。
WORKSHEET関数では、"TERM SHEET"を追加し、A列に年・日データ、B列にTerm情報を付記した上で
下記の関数で記載する事が出来ました。
=VLOOKUP(DATE(LEFT(A2,4),MID(A2,6,2),MID(A2,9,2)),term!$A:$B,2)
当該Worksheet関数をVBA化するに当たり、首っ引きで下記のように記載してみましたが、うまく行きません。
Dim eddateA As Date
For i = 2 To 10
eddateA = Cells(i, 1)
Worksheets("schedule").Cells(i, 1).Value = Application.VLookup(DateSerial(Year(eddateA), Month(eddateA), Day(eddateA)), Worksheets("term").Range("$A:$B"), 2)
Next
詳しい方、アドバイス頂けませんでしょうか?
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
ぱっと見、eddateBというのをセットしていないようですが
これは 何をセットしているのでしょうか?
うまくいかないのは この初期化されていない変数を使ってるのが
原因ではないでしょうか?
書きこみ有難う御座います。eddateBはeddateAの誤りです。。失礼しました。
本文修正致しました。
何が うまくいかないのかは よくわからないのですが
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
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
書き忘れましたが、後者の方は「=FYandQ(A2)」という様な感じで使用して下さい。
表示出来ました!
確かに別シートからデータを持ってくる意味合いがないですね。
勉強になりました。
有難う御座いました!
書き忘れましたが、後者の方は「=FYandQ(A2)」という様な感じで使用して下さい。
2013/05/27 01:15:49表示出来ました!
2013/05/27 10:53:42確かに別シートからデータを持ってくる意味合いがないですね。
勉強になりました。
有難う御座いました!