人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

EXCEL2007のVBAについての質問です。
"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
詳しい方、アドバイス頂けませんでしょうか?


1369560924
●拡大する

●質問者: bamboodragon
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●0ポイント

ぱっと見、eddateBというのをセットしていないようですが
これは 何をセットしているのでしょうか?

うまくいかないのは この初期化されていない変数を使ってるのが
原因ではないでしょうか?


bamboodragonさんのコメント
書きこみ有難う御座います。eddateBはeddateAの誤りです。。失礼しました。

bamboodragonさんのコメント
本文修正致しました。

2 ● きゃづみぃ
●0ポイント

何が うまくいかないのかは よくわからないのですが

Worksheets("schedule").Cells(i, 1).Value =

Worksheets("schedule").Cells(i, 2).Value =
なのでは なかろうかと思います。


bamboodragonさんのコメント
たびたびすみません。 修正しました。

きゃづみぃさんのコメント
うまくいかない原因を指摘しているのに 評価されないのは不本意ですね。

質問者から

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

Silvanusさんのコメント
書き忘れましたが、後者の方は「=FYandQ(A2)」という様な感じで使用して下さい。

bamboodragonさんのコメント
表示出来ました! 確かに別シートからデータを持ってくる意味合いがないですね。 勉強になりました。 有難う御座いました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ