Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


45860 / 76732 ←次へ | 前へ→

【35857】Re:日付から年度を取得して、それに対応した数値を取得したい
回答  かみちゃん E-MAIL  - 06/3/14(火) 18:17 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>下記のようなワークシートで、(A列に自動で数値を入力したい)
>A列は空欄です。
>B列には8桁の日付があらかじめ入力されています。
>
>A列   B列
> 61    20060202
> 61    20050701
> 62    20060602
> 63    20070601
>
>条件は B列の数値で決まります。
>
>20050401 から 20060331 までなら A列に 61
>20060401 から 20070331 までなら A列に 62
>20070401 から 20080331 までなら A列に 63
>20080401 から 20090331 までなら A列に 64

3月31日を末日とする年度を取得し、その年度から1944を引いた値を求めるという
規則性でよければ、以下のような感じでできます。

なお、年度取得関数については、以下のURLを参考にしています。
http://www.nurs.or.jp/~ppoy/access/access/acM059.html

Sub Macro1()
 Dim c As Range
 
 For Each c In Range("B2:B5")
  '3/31を末日とする年度を取得し、その年度から1944を引いた値を求める
  If IsDate(Format(c.Value, "0000\/00\/00")) Then
   c.Offset(, -1).Value = GetNenDo(DateValue(Format(c.Value, "0000\/00\/00")), 3, 31) - 1944
  End If
 Next
End Sub

'決算月日を考慮した西暦年度取得
'GetNenDo(売上日,決算月,締め日)
'例: GetNenDo("2006/03/14",3,31) → 2005
Function GetNenDo(ByVal myDate, ByVal myEmonth, ByVal myEday) As Long
 Dim tmpDate As Integer
 Dim tmpYear As Long
 Dim tmpMonth As Integer

 GetNenDo = 0
 If IsNull(myEmonth) Then Exit Function
 If IsNull(myEday) Then Exit Function
 If IsNull(myDate) Then Exit Function

 '月
 If IsDate(myDate) Then tmpMonth = Month(myDate) Else Exit Function

 '年
 If tmpMonth < myEmonth Then
  '決算月の前
  tmpYear = Year(myDate) - 1
 ElseIf tmpMonth = myEmonth Then
  '決算月
  tmpDate = Day(myDate)
  If tmpDate <= myEday Then
   tmpYear = Year(myDate) - 1
  Else
   tmpYear = Year(myDate)
  End If
 Else
  '決算月の後
  tmpYear = Year(myDate)
 End If

 '年末決算の例外
 If DateSerial(Year(Date), myEmonth, myEday) = _
  DateSerial(Year(Date), 12, 31) Then
  tmpYear = tmpYear + 1
 End If

 GetNenDo = tmpYear
End Function
0 hits

【35853】隣のセルの値によって決まった値を入れたいのです。 pochiman 06/3/14(火) 17:47 質問
【35857】Re:日付から年度を取得して、それに対応し... かみちゃん 06/3/14(火) 18:17 回答
【35867】Re:日付から年度を取得して、それに対応し... pochiman 06/3/14(火) 23:59 お礼
【35858】Re:隣のセルの値によって決まった値を入れ... ゆと 06/3/14(火) 18:17 発言
【35868】Re:隣のセルの値によって決まった値を入れ... pochiman 06/3/15(水) 0:04 お礼

45860 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free